Nov 19

[原]putty使用密钥登陆OpenSSH 阴

linuxing , 13:11 , 网络服务 » 远程管理 , 评论(9) , 引用(0) , 阅读(53862) , Via 本站原创 | |
    在Windows管理Linux服务器时,常使用putty登陆ssh进行远程管理。默认登陆验证方式为密码认证,该方式虽然简单,但每次登陆都要输入一长串的密码,相当麻烦。而且,如果万一把root允许登陆打开,还有可能被强力破解,导致严重的后果。
    所以,通常建议用密钥登陆验证代替密码方式,即简单,又可靠。
一、为什么建议使用密钥登陆
通常现在的Linux发行版都使用OpenSSH代替telnet、rsh等明文传输的终端服务。
以红旗 DC Server 5.0为例:
引用
# rpm -qa|grep -E -w 'openssh'
openssh-clients-4.0p1-1.2AX
openssh-server-4.0p1-1.2AX
openssh-4.0p1-1.2AX

而OpenSSH默认是同时支持密码和密钥两种认证方式的。转一个说明:

为什么要使用公钥认证
通常,通过ssh登录远程服务器时,使用密码认证,分别输入用户名和密码,两者满足一定规则就可以登录。但是密码认证有以下的缺点:
引用
a)用户无法设置空密码(即使系统允许空密码,也会十分危险)
b)密码容易被人偷窥或猜到
c)服务器上的一个帐户若要给多人使用,则必须让所有使用者都知道密码,导致密码容易泄露,而且修改密码时必须通知所有人

而使用公钥认证则可以解决上述问题。
引用
a)公钥认证允许使用空密码,省去每次登录都需要输入密码的麻烦
b)多个使用者可以通过各自的密钥登录到系统上的同一个用户
c)即使修改了对应用户的密码,也不会影响登陆
d)若同时禁用密码认证,则只要保证私钥的安全,不会受到暴力破解的威胁

二、使用putty生成密钥和登陆
根据公钥认证的原理(见后面说明),认证双方任何一方都可制作该钥匙对,并且只要认证方有被认证方的公钥信息,即可匹配成功。
这里,我们先以Windows上的putty登陆Linux服务器为例说明。所以,该密钥对由putty制作。
继续前,请确保您已经把整个putty包都下载完:
官方网站:点击
最新版本:0.60,我截图的版本是0.55的。
本地下载:
其中包括:PuTTY、Puttygen、PSCP、Plink、Pagent 等工具。
1、使用puttygen制作密钥
启动puttygen工具,为兼容OpenSSH密钥,选择“SSH2 RSA”
点击在新窗口中浏览此图片
单击 Generate 按钮,并使用鼠标在“key”框内移动,以获得足够的随机数据供生成密钥使用:
点击在新窗口中浏览此图片
※期间,你会看到进度条上面有个提示“Please generate some radomness by moving the mouse over the blank area.”,意思就是让你用鼠标在空白区域随机移动。随着鼠标在空白区域的移动,进度条会一直走下去。停止移动鼠标,进度条也就停止了。所以,那我们要移动鼠标,直到进度条走满为止。
完成后的窗口如下:
点击在新窗口中浏览此图片
其中:
引用
Key comment:是注释,不会影响密钥的有效性,但可作为自己用于区别其他密钥的参考;
Key passphrase 和 Confirm passphrase :用于保护私钥,如果不输入该信息,那么任何人只要拿到该私钥,即可无密码登陆系统,非常危险;通常情况下,我是建议大家输入的,但这里为了方便说明,暂时留空,请看后面使用的说明。

随后,点击“Save private key”保留私钥。
如果没有输入Key passphrase信息,会有警告:
点击在新窗口中浏览此图片
输入私钥的文件名:
点击在新窗口中浏览此图片
※公钥信息可以不用保留在本地的,puttygen可以从私钥得到它,验证时也不会用到。

2、修改openssh配置
修改/etc/ssh/sshd_config:
引用
ChallengeResponseAuthentication no  #关闭挑战应答方式
UsePAM no  #不使用PAM认证

然后重启sshd服务,原因见:这里

3、拷贝公钥信息
上面密钥信息窗口的“Key”框最后生成的就是公钥信息:
点击在新窗口中浏览此图片
需要把该信息拷贝到Linux服务器的特定文件中:~/.ssh/authorized_keys
其中,“~”表示对应用户的主目录,以root为例。
若.ssh目录不存在,请创建它,并把公钥信息写入文件中:
# mkdir ~/.ssh
# chmod 700 ~/.ssh
# vi ~/.ssh/authorized_keys
# chmod 644 ~/.ssh/authorized_keys

※请务必留意:文件和目录的权限问题,用户必须是将要进行认证的用户,而权限必须是0644,也就是禁止其他人对该文件写入信息。(否则,某些有心人把自己的公钥写入这里,他也可以无密码进来了)
因为,通常umask是0022或0002的,所以请使用chown和chmod修改为对应的权限咯。


4、使用putty使用密钥登陆
对putty进行一些简单配置,即可使用密钥登陆Linux服务器。
选择Connection-SSH-Auth,在“Private key file for authentication”输入密钥的路径:
点击在新窗口中浏览此图片
然后在Connection的“Auth-login username”输入登陆的用户名,例如root:
点击在新窗口中浏览此图片
◎Putty 0.60 版本在Connection-Data页内。
然后点击Open即可:
点击在新窗口中浏览此图片
若一切正常,则可以在session中Save保存配置。

三、使用OpenSSH生成密钥
密钥既可使用putty生成,也可用OpenSSH生成。
1、Linux下生成密钥
运行:
引用
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):  <-密钥路径
Enter passphrase (empty for no passphrase): <-密钥保护密码
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa. <-私钥
Your public key has been saved in /root/.ssh/id_rsa.pub. <-公钥
The key fingerprint is:
17:28:4c:c3:e4:18:d4:c2:31:bd:be:a7:a9:d4:a8:48 root@mail.linuxfly.org

2、把公钥信息写入authorized_keys文件中
运行:
# cd ~/.ssh
# cat id_rsa.pub >> authorized_keys


3、生成putty的私钥
由于SSH的标准中,并没有固定密钥文件的格式。而Putty使用的私钥格式和OpenSSH生成的有点不同,需要转换一下。
a)把id_rsa传到Windows机器上
b)使用puttygen的“Load”读取id_rsa文件
点击在新窗口中浏览此图片
这里也可以从图中的公钥信息,与id_rsa.pub对比一下,应该是一致的。
c)点击“Save private key”保留私钥。
d)putty使用该新的私钥登陆服务器即可。
内文分页: [1] [2]
Tags: , , ,
网站工作室 Email Homepage
2012/10/19 15:45
感谢博主的文章,写的非常细致,参照你的方法成功了。shy
建议在修改sshd_config文件的地方增加一行:
PasswordAuthentication no
否则仍然可以用密码登录。
linuxing 回复于 2012/11/01 10:44
这个在本文的第二页开头的配置中就有说明的。
yanqian Email Homepage
2012/10/12 12:23
您好,感谢如此详尽的说明!不过文中这句话中的“authorized_keys”写错了:“需要把该信息拷贝到Linux服务器的特定文件中:~/.ssh/authroized_keys”但下面的命令中是正确的,还望更改下,更完美!
linuxing 回复于 2012/10/12 13:35
谢谢,已经改过来了。
NewComerForAndroid
2010/05/07 21:37
Great, thanks a lot!grin
zhy
2009/11/11 12:59
chown 700 ~/.ssh

改成chmod 700 ~/.ssh
linuxing 回复于 2009/11/13 10:46
谢谢!之前有朋友提过,但还是忘了改一个地方。^_^
路人甲
2009/10/11 21:40
谢谢
Steven
2008/10/23 13:24
文笔清晰,简单实用。谢谢!
Esword Homepage
2008/08/01 11:41
不错。感谢您的文章。写的很详细
wht
2008/05/23 20:45
# mkdir ~/.ssh
# chown 700 ~/.ssh
# vi ~/.ssh/authorized_keys
# chown 644 ~/.ssh/authorized_keys

这里的chown应该是chmod
谢谢你的文章,清晰明了,
linuxing 回复于 2008/05/27 16:39
谢谢!已经改过来了。
微山湖论坛 Homepage
2008/05/09 09:51
grin
好的。明白了不少。
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]