首页 > IT职业 > IT生活 > 配置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。但所有的升级过程与网页上描述的全部一致)。本文下半部分增加了修改根目录及读写权限设置相关内容。
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
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
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安装成功后,系统中任何的用户都能登录成功。而我们需要的是将某一个目录公开出去,并且让指定的某个用户进行访问。这里我们要让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机器中也进行上述的设置,直到创建公钥这一步。用户名可选取其他,如test,方便区分。
最后,在test用户下执行:
ssh-keygen -t rsa
ssh-keygen -t dsa
cat id_rsa.pub >> tobank.pub
cat id_dsa.pub >> tobank.pub
将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
注释掉:
Subsystem sftp /usr/libexec/openssh/sftp-server
替换为:
Subsystem sftp internal-sftp
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/ ,如需转载,请注明出处,否则将追究法律责任。