ITPub博客

首页 > IT职业 > IT生活 > 配置ssh及使用公钥认证访问

配置ssh及使用公钥认证访问

原创 IT生活 作者:sandish 时间:2010-05-30 19:05:39 0 删除 编辑

配置ssh及使用公钥认证访问

Ssh软件升级

在安装redhat5EE时,可以选择安装ssh。默认安装的openssh是4.3版本,不能重设访问的根目录,也无法实现禁止访问根目录上层的系统目录。通过将openssh升级到当前最新版本5.5p1后,能够解决旧版本不具有的一些功能。

升级需要下载的软件包括zlib-1.2.5.tar.gz,openssl-1.0.0.tar.gz和openssh-5.5p1.tar.gz。下载地址可通过google查询到。

升级过程可参考:

http://hi.baidu.com/cnlongmeng/blog/item/eff9f1fc003a41f4fd037f8d.html

下面摘录并修改下上面网页的主要内容(网页内容中升级的三个文件版本,当前已经更新到zlib1.2.3,openssl1.0.0,openssh5.5p1。但所有的升级过程与网页上描述的全部一致)。本文下半部分增加了修改根目录及读写权限设置相关内容。

升级zLib至1.2.5版本

1、 下载Zlib 1.2.5
a) http://zlib.net/zlib-1.2.5.tar.gz
2
、 安装Zlib 1.2.5
a) tar –zxvf zlib-1.2.5.tar.gz
b) cd zlib-1.2.5
c) ./configure –prefix=/usr/local/zlib
d) make
e) make install

升级OpenSSL至1.0.0版本

1、 下载OpenSSL 1.0.0
a) http://www.openssl.org/source/openssl-1.0.0.tar.gz
2
、 安装OpenSSL 1.0.0
a) tar –zxvf openssl-1.0.0.tar.gz
b) cd openssl-1.0.0
c) ./config shared zlib
d) make
e) make install
f) mv /usr/bin/openssl /usr/bin/openssl.OFF
g) mv /usr/include/openssl /usr/include/openssl.OFF
h) ln –s /usr/local/ssl/bin/openssl /usr/bin/openssl
i) ln –s /usr/local/ssl/include/openssl /usr/include/openssl
3
、 配置库文件搜索路径
a) echo “/usr/local/ssl/lib” >> /etc/ld.so.conf
b) ldconfig –v
4
、 查看OpenSSL的版本号,验证安装结果
a) openssl version –a

升级OpenSSH至5.5p1版本

1、 下载OpenSSH 5.5p1
a)
ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-5.5p1.tar.gz
2
、 安装OpenSSH 5.5p1
a) tar –zxvf openssh-5.5p1.tar.gz
b) cd openssh-5.5p1
c) ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/ssl --with-md5-passwords --with-zlib=/usr/local/zlib
d) make
e) make install
3
、 配置SSH 5.5p1,增SSH的安全性
a) vi /etc/ssh/sshd_config
b)
将#Protocol 2,1修改为Protocol 2
c)
修改完之后保存退出
d)
重启服务service sshd restart 使修改生效
4
、 查看OpenSSH的版本号,验证安装结果
a) ssh -V
5
、 如果OpenSSH和OpenSSL都是新的版本号就大功告成了。

注意事项

在make openssh时,可能会出现configure: error: PAM headers not found,如果出现这个问题,可能是这个软件包没有安装或有问题,此时,可以查找redhet5安装光盘有关pam的rpm包,将这些包全部安装完后(最主要是要安装pam-devel-0.99.6.2-4.el5.i386.rpm,在root下可用命令 rpm -i pam-devel-0.99.6.2-4.el5.i386.rpm进行安装),重新make下openssh即可成功。

Ssh配置(A机器)

Ssh安装成功后,系统中任何的用户都能登录成功。而我们需要的是将某一个目录公开出去,并且让指定的某个用户进行访问。这里我们要让bank用户进行访问。

创建用户组和用户:

#groupadd bank

# useradd bank –G bank

#passwd bank

#[输入bank用户的密码]

此时会在home目录下创建了用户的根目录 bank。

创建需要公开的目录

#mkdir /home/bank/sharedir

#mkdir /home/bank/sharedir/readonlydir

#mkdir /home/bank/sharedir/writedir

创建公钥

#su - bank

$

通过bank用户使用以下四条命令,创建两个rsa和dsa公钥,生成授权文件,改变授权文件的属性(以下文件将存放在home目录的.ssh目录下,这里为/home/bank/.ssh):

ssh-keygen -t rsa

ssh-keygen -t dsa

cat id_rsa.pub >> authorized_keys

cat id_dsa.pub >> authorized_keys

chmod 600 authorized_keys

另一台机器配置(B机器)

在另外一台B机器中也进行上述的设置,直到创建公钥这一步。用户名可选取其他,如test,方便区分。

最后,在test用户下执行:

ssh-keygen -t rsa

ssh-keygen -t dsa

cat id_rsa.pub >> tobank.pub

cat id_dsa.pub >> tobank.pub

authorized_keys文件配置

将B机器的tobank.pub文件传给A机器。

在A机器中,将tobank.pub追加到authorized_keys文件

cat tobank.pub >> authorized_keys

然后,将authorized_keys文件拷贝到B机器的公钥存放的文件夹。

修改跟目录路径

编辑/etc/ssh/sshd_config

#vi /etc/ssh/sshd_config

开启内部sftp server支持

注释掉:

Subsystem sftp /usr/libexec/openssh/sftp-server

替换为:

Subsystem sftp internal-sftp

指定bank用户登录后的根目录

AuthorizedKeysFile /home/bank/.ssh/authorized_keys

Match group bank

ChrootDirectory /home/bank/sharedir

X11Forwarding no

AllowTcpForwarding no

ForceCommand internal-sftp

保存sshd_config文件后退出。

重启sshd 服务:

/etc/init.d/sshd restart

重启后,使用root用户修改以下文件夹属性:

#chown root.root /home/bank

#usermod -d /home/bank/sharedir bank

操作完后,bank用户通过ssh登录后,根目录为sharedir,也不能往上追溯目录了。

修改目录读写权限

由于sharedir以及这个目录下的readonlydir和writedir都是root用户创建的,因此使用bank用户登录后都没有写权限,如果要将writedir置为能写,使用如下命令:

#chown bank /home/bank/sharedir/writedir

使用公钥

通过以上的过程,在B机器的test用户下,可使用以下命令登录A机器的公开的目录:

$sftp bank@[A机器IP地址] (敲回车后,就不再需要输入密码了)

Sftp>dir

实例

本次在与银行的测试中,银行只将 id_dsa.pub 发给我,我将这个文件添加到authorized_keys下,银行就能够通过 “bank@ip地址”进行访问,但在敲入该命令后,会有一个“Are you sure you want to continue…”的提示,后来银行自行解决了这个问题。

sh tt.sh
Connecting to 18.80.196.8...
The authenticity of host '18.80.196.8 (18.80.196.8)' can't be established.
RSA key fingerprint is 90:e8:ed:89:88:13:a2:66:03:f3:a4:76:43:d4:28:c7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '18.80.196.8' (RSA) to the list of known hosts.
sftp> dir
401 501 502
sftp> cd bank
Couldn't canonicalise: No such file or directory
sftp> cd 01
Couldn't canonicalise: No such file or directory
sftp> cd 501
sftp> cd bank
sftp> dir
frombank.pub id_dsa.pub
sftp> bye


参考资料

http://hi.baidu.com/cnlongmeng/blog/item/eff9f1fc003a41f4fd037f8d.html (重要参考资料)

http://eryin.blog.51cto.com/320220/184964

http://blog.chinaunix.net/u2/83111/showart_1674597.html

http://hi.baidu.com/shirdrn/blog/item/523aec06fb28ae7d02088193.html

董建军

2010/5/30

于山西晋城广电

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15962/viewspace-1034038/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 行列转换
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2007-12-31

  • 博文量
    13
  • 访问量
    160388