用密钥进行SSH的安全登陆[SSH+PAM+PuTTY]

时间:2021-08-31 14:22:28

用密钥进行SSH的安全登录[SSH+PAM+PuTTY]

作者:萧少聪[Scott Siu]
E-Mail:scottsiuzs@gmail.com

以前看过好多关于SSH密钥进行登录的文章,好多都在点残缺不全,我在这整理一下!

系统平台

服务器:SLES 9.3
客户端:Window XP
RHEL 4 AS 4.0


笔记
1、PuTTY生成密钥(Window)
下载PuTTY的组件 http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
包括:putty.exe puttygen.exe plink.exe pageant.exe 后两个文件这理暂时用不到
生成KEY:
运行 puttygen.exe 在最下方先择你要的加密算法及位数,如:SSH-2 DSA 2048
点击 "Generate" 生成密钥
"Save public key" 保存公钥如:wsshtest
"Save private key" 保存私钥如:wsshtest.ppk

2、ssh-keygen(Linux)
例如:当前用户是root,我要加一个帐号 sshadmin 让它有登陆到远端服务器的权限
# useradd sshadmin -m
# passwd sshadmin
# mkdir /home/sshadmin/.ssh
# chown sshadmin:users /home/sshadmin/.ssh
# cd /home/sshadmin/.ssh
# ssh-keygen -t dsa 2048(这里会让你输入密钥的文件名如:lsshtest)
# cp lsshtest id_dsa(cat /etc/ssh/ssh_config看看就明白为什么要cp了)

3、服务器
前提:我现在是 root 帐号,服务器地址192.168.1.100
# useradd sshuser -m(在服务器建立允许 SSH 登录的帐号)
# passwd sshuser
# mkdir /home/sshuser/.ssh
# chown sshuser:users /home/sshuser/.ssh
# vi /home/sshuser/.ssh/authorized_keys
(把刚刚 LINUX 中 ssh-keygen 生成的 lsshtest.pub 的内容写入到这个文件
把刚刚在 PuTTY 中 生成的 wsshtest 的内容也写入到这里,最后文件类似于:
ssh-dsa XXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXX xxx@localhost
ssh-dsa XXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXX dsa-key-20061115
要注意的是:PuTTY生成的文件在LINUX中可能会出现分行而不是单行的文本,请把它串成一行!
authorized_keys中一行代表一个KEY)

下面是对SSH服务的设置
# vi /etc/ssh/sshd_config
PermitRootLogin no(不允许root登录)
AllowUsers sshuser user1 user2 (只允许user1 user1登录)
PasswordAuthentication no(对于是否能用密码登录的设定)
KerberosAuthentication no(同上)
UsePAM no
(我发现SSH安装时的设定就已经是只支持密钥登录的,只是PAM又允许了密码的使用
这里有两个方法可以把它设为只支持使用密钥,一个是上面的UsePAM设为no不使用PAM,
第二种是下面的在PAM SSH配置文件中加上一行。)
# vi /etc/pam.d/sshd
auth required pam_securid.so reserve(只允许通过密钥登录)

# /etc/init.d/sshd restart
# chkconfig sshd on


4、防火墙iptables
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT


5、测试

WINDOW:运行PuTTY
Session -> Host Name: 192.168.1.100
Connection -> Data -> Auto-login username: sshuser
Connection -> SSH -> Auth: 选择刚刚生成的 wsshtest.ppk

LINUX: 以sshadmin登陆
# ssh sshuser@192.168.1.100

你可以试试在PuTTY中不用ppk来登陆。。。呵呵。。。通不过验证吧!
你也可以试试sshd_config中UsePAM yes和no的效果,我更推荐用no


以上内容如有遗漏讲与我联系,转载讲注明出处!谢谢!