一)winxp ssh linux
在 Connection- 〉 Data 里面有个 Auto-login username ,填入登录用户即可。这样每次登陆时就不用输入用户名,但要输入用户密码,如果想连用户密码也不用输入,实现完全自动化登陆的话,则往下看。
先来说下“使用 ssh 公钥实现 ssh 免密码登录”的原理:
密匙认证需要依靠密匙,首先创建一对密匙(包括公匙和密匙,并且用公匙加密的数据只能用密匙解密),并把公匙放到需要远程服务器上。这样当登录远程服务器时,客户端软件 就会向服务器发出请求,请求用你的密匙进行认证。服务器收到请求之后,先在你在该服务器的宿主目录下寻找你的公匙,然后检查该公匙是否是合法,如果合法就用公匙加密一随机数(即所谓的 challenge )并发送给客户端软件。客户端软件收到 “challenge” 之后就用私匙解密再把它发送给服务器。因为用公匙加密的数据只能用密匙解密,服务器经过比较就可以知道该客户连接的合法性。
操作过程如下:
1 .打开 PuTTYgen ,点击 Generate 按钮后,移动鼠标,即可生成一个公钥和私钥对。
按“ Save private key ”保存私钥前,可输入密钥注释和密钥口令,若让口令空,则不用 PAGEANT . EXE 代理即可实现自动登陆;若设置了密码,则登陆时要输入密钥密码而非用户密码,如此时要实现自动登陆,则需要使用 PAGEANT . EXE 代理,代理的使用在下面会说到。保存密钥后(密钥文件的后缀名为 .ppk )若需要修改,按 Load 按钮可以把先前保存的私钥重新打开,然后做些修改,比如修改注释和私钥口令。
2 .在 linux 里,为方便起见,输入如下命令,来编辑 authorized_keys 文件
mkdir -p $HOME/.ssh && touch $HOME/.ssh/authorized_keys \
&& chmod go-w $HOME $HOME/.ssh $HOME/.ssh/authorized_keys && vim $HOME/.ssh/authorized_keys
因为创建的文件,目录和用户主目录
($HOME, $HOME/.ssh, $HOME/.ssh/authorized_keys) 的权限必须是除本帐户外其他所有帐户都只能是只读的,否则的话,即使公钥、私钥都匹配无误,也是无法登入系统的。这是 SSH 服务器的一个安全要求,如果别的帐户可以修改你的 authorized_keys 的话,恶意的增加一个公钥,那对方不用你的帐户口令也能以你的帐户登入系统了。对于一些特殊要求,你可以在 SSH 服务器的配置文件 sshd_config 中用指令
StrictModes no
3 .把文本框里的公钥粘贴到 vim 中去,需要说明几点:这个文本框里的内容是一行的,粘贴到 vim 中前,先按字母 o 这个键,否则的话,粘贴进去后,开头的 ssh-rsa 会变成 sh-rsa ,为什么呢?我也不清楚。然后按 ZZ 保存退出。
4 .如果已经有了私钥,第 4 步里的那个公钥忘记保存了,就用 PuTTYgen 把这个私钥 Load 上去,然后重新复制一下公钥吧。
5 .在 PuTTY 的配置 Connection->SSH->Auth 这里面,指定上私钥,建议选上
Allow agent forwarding 这一项,然后记得保存 Session ,以后就不需要重复这一步了。
6 .最后指定自动登录的用户名, Connection -> Data -> Auto-login username
登录 , (若设置了密钥口令)此时输入的口令可不是主机上这个账户的口令了,而是先前创建的这个密钥的口令。以后不管这个账户的口令是什么,只要这个账户的 $HOME/.ssh/authorized_keys 文件中,有我们的公钥,我们就随时用匹配的私钥都可以登录了。配合后面提到的 Pagent ,我们连输入密钥口令这一步也可以忽略过去。
(二)linux ssh linux (无需输入密码,自动登陆)
linux ssh linux
1.用"ssh-keygen -t rsa"产生Keys。
[kpl@bogon root]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/kpl/.ssh/id_rsa):
Created directory '/home/kpl/.ssh'.
Enter passphrase (empty for no passphrase): <==这里按Enter
Enter same passphrase again: <==再按一次Enter
Your identification has been saved in /home/kpl/.ssh/id_rsa. <==这是私钥
Your public key has been saved in /home/kpl/.ssh/id_rsa.pub. <==这是公钥
The key fingerprint is:
03:df:47:b9:11:47:73:4c:31:49:1d:10:f0:64:f9:86kpl@bogon
2.将私钥id_rsa权限改为-rw-------,否则成功。
3.将私钥放在Client端的$HOME/.ssh/id_rsa里。
4.将公钥加载到Server端的需登陆的用户的authorized_keys,操作如下:
1)先在Client端以sftp将公钥id_rsa.pub复制到Server端需登陆的用户目录
#cd ~/.ssh
#sftp IP
sftp> put id_rsa.pub
sftp> exit
2)到Server上,将公钥转存到authorized_keys文件中
#cd ~/.ssh
#cat ../id_rsa.pub >> authorized_keys