SSH不输入密码连接远程Linux主机

SSH不输入密码连接远程Linux主机

机 理:公/私密钥验证。公钥(public key)用于加密,私钥(private key)用于对使用其匹配的公钥加密的数据进行解密。在本地机器生成一个密钥对,把公钥放到远程主机,然后从本地机器发起ssh连接,远程主机的sshd 产生一个随机数并用此公钥进行加密后发给本地机器,本地机器使用私钥进行解密并将结果发回,远程主机验证结果无误后准予登陆。

步骤:
注:密钥需要与远程Linux主机上的SSH系统相匹配。openSSH是Linux上默认的SSH系统,因此这里的内容只适用于openSSH。
1. 生成密钥对。
(1)Linux
$ ssh-keygen -t rsa
这 个命令生成一个密钥对:id_rsa和id_rsa.pub。他们默认被保存在~/.ssh/目录下。可以将id_rsa.pub改名为 local_rsa.pub以免与远程主机上的id_rsa.pub重名。在生成过程中会要求输入pass phrase,这个是用来保护私钥的使用的,即每次你使用私钥的时候需要先输入这个密码,因此这里不要输入任何字符,直接回车。
(2)Windows + putty
需 要用putty-gen.exe来生成密钥。运行putty-gen.exe后,点击“Generate”按钮生成密钥,点击“Save private key”保存putty可以使用的密钥,如test.ppk。pass phrase的部分同前。在“Public key for passing into openSSH authorized_keys file”一行下面的文本框中就是公钥的内容,将该内容拷贝到一个空白的文本文件,保存文件,如test.pub。

2. 上传公钥。
将生成的公钥,如test.pub,上传到远程主机的~/.ssh目录下,将test.pub的内容附加到authorized_keys文件末尾。

3. 远程主机SSH的设置
authorized_keys必须只有所有者才能访问:
$ chmod go-rwx ~/.ssh/authorized_keys
另外,为了不在每次发起连接时输入pass phrase:
$ ssh-agent $SHELL
$ ssh-add
(注:这个是参照MPICH的SSH设置,我还不确定如果不使用MPICH的话这个是不是必需的。)

4. 连接
(1)Linux
在Linux终端下,直接输入ssh remote_machine_name然后即可发起ssh连接,远程系统将进行公钥认证。
(2)Windows + putty
在session的auth选项中,选择前面步骤中生成的私钥文件,然后点击“open”。在要求输入用户名时,输入用户名。
 
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭