分享

putty之SSH远程登录免输密码

 落寒影LIB 2015-04-27

下面是在windows上使用putty远程登录免输密码的操作方法。

第一步:生成密匙

运行puttygen.exe,选择需要的密匙类型(parameters)和长度(bits)。putty默认使用SSH2协议,长度默认值为1024,我们暂且选用SSH1协议,后面讨论使用SSH2协议与使用SSH1协议设置上的不同。点击Generate生成密匙,生成后 的Key passphrase 和 Confirm passphrase 两项可以保持为空 ,passphrase是用来保护私匙的密码,如果没什么特别高的安全要求就不用了,免得登录时还要输入一次密码。后面讨论如果输入passphrase,也可以自动登录系统。点击 Save public key 按钮和 Save private key 按钮分别保存公匙和私匙例如 id_rsa1.pub 和 id_rsa1.prv。

第二步:上传密匙

把公钥文件传送到远程开启sshd的设备上。进入$HOME/.ssh目录下,打开authorized_keys文件,如果没有就新建一个,新增一行内容:ssh-rsa xxxx,其中xxxx是刚才的公钥(第二步中保存的公钥文件中的BEGIN和END之间的那部分)。ssh-rsa表示使用的是rsa算法。这些必须是同一行,不能分成多行。

请特别注意权限的设置

chmod 600 $HOME/.ssh/authorized_keys

chmod g-w $HOME $HOME/.ssh/ $HOME/.ssh/authorized_keys


第三步:设置Putty

启动Putty,设置好session的各项参数(如IP address,protocol选择SSH),然后从左边选择SSH,”Preferred SSH protocol version:”,
这时我们用的是SSH1协议,那么我们就选择协议版本1,再“SSH->Auth”,”Private key file for authentication:” 点击 Browse 按钮,选择 id_rsa1.prv 文件。
再从左边选择 Session,然后点击 Save 按钮把修改保存下来。然后点击Open 按钮就可以登录了。
如果上面的操作都没有问题,那这时应该就自动登录了,无需输入密码。 正常情况下会显示如下:
login as: root
Authenticating with public key "rsa-key-20050328"
Last login: Mon Mar 28 14:39:13 2005 from 192.168.0.2
有了上面第二行的信息,表明你已经正常启用SSH通讯了。
======================================================================
其它问题:
一,使用SSH2协议
如果要用SSH2协议,需要修改一下 /etc/ssh/ssh_config 文件,把#Protocol 2,1 这一行前面的#字符去掉,默认也是先是ssh2,再是ssh1,实际上不除去#注释也是可以的。
用puttygen.exe生成SSH2协议格式的密匙(操作方法同上),上传到.ssh/authorized_keys文件时,需作如下修改,因为puttygen.exe和bsd/Linux生成的SSH2密匙格式不一样
例如puttygen.exe生成的公匙是id_rsa2.pub
[root@mail .ssh]# cat id_rsa2.pub
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20050328"
AAAAB3NzaC1yc2EAAAABJQAAAIEAtZgDykOOegKu6sCGzxpzA2CwB5o2X37FM4lg
41LXw3DR2/7+aBQNYDez3BWkGIluyfuyWYlw21bEzUiJhJ9/8tX5FUJLBYr/ELtq
jI08dfhHaRjVM8cRQX7fv6jCNIuyEKlml9QuFdIOIX3bS5dkAHkk9GKMgaMISK44
zB4qUfM=
---- END SSH2 PUBLIC KEY ----
而BSD/Linux生成的ssh2格式是

[root@linuxwht .ssh]# cat id_rsa.pub
ssh-rsa AAAB3NzaC1yc2EAAAABIwAAAIEAsD4qEibcK1e9ZgFX6bahxnU/It5MjC/7U56n
OOZ0MDf+LHU7bWo3M6XH/mp1KeTRrHIPtmEl2PTkf9/3NffNtBdAkSJ/sWoPoaeJlShcvK2
wzOsrre4FyJRRUtl2jdCDJxRX0Cu2GV/aNphVQoAuU0lj7/55eladpO8/jr14adE=
所以照着Linux默认的格式改一下就可以了。
如果没有 puttygen.exe,那么可以用 bsd/linux 自带的 ssh-keygen 生成密匙,命令格式如下:
ssh-keygen -b 密匙长度 -t 密匙类型
密匙类型可以是:rsa1 (对应SSH1 RSA)、rsa 和 dsa (对应SSH2)
如:ssh-keygen –b 1024 –t rsa
默认是生成的~/.ssh/id_rsa文件。
不过 ssh-keygen 生成的SSH2密匙和putty的密匙格式不同,无法直接使用,必须用 puttygen.exe 转换一下。
所以大家还是用 rsa1 好了,反正一般用途也没什么区别。
二,让Putty显示中文
启动putty
windows -> appearance -> font setting -> change...
将putty的默认字体设置为"新宋体" 小四
连接到服务器以后输入:
export LANG=zh_CN.GB2312
更改环境变量。

三,设置passphrase后,让系统自动登录
打开pageant.exe,右击右下角的pageant.exe的图标,"add key",选择刚刚生成的私匙如id_rsa2.ppk,OK,
只要打开pageant.exe,以后就不用输入passphrase,系统就可以自动登录了。
pageant 的作用是将解加密的 private key 放在内存里,需要的时候调用。

======================================================================
可能出现的几种问题:
1、Server refused our key
公匙和私匙不匹配,或者没有 authorized_keys 文件
解决方法:这个问题大多是使用puttygen.exe生成ssh2格式的密匙和Linux上面的不一样,
照着上面的改(只是增加ssh-rsa)就可以了。
2、Unable to use key file "id_rsa1.prv" (SSH1 private key)
私匙文件的格式不正确或登录类型没有设置正确
解决方法:打开puttyàSSH选项时,“Preferred SSH protocol version:”,这时如果你用SSH1协议,
就选择“1”,如果你使用SSH2协议就选择“2”,这个大多是你生成的是SSH1协议的密匙,
而putty登录类型选择为protocol 2。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多