SSH实现双向认证

Posted 梦徒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH实现双向认证相关的知识,希望对你有一定的参考价值。

SSH实现双向认证

由于经常需要使用scp在两台机器间拷贝文件,每次都输入密码太麻烦,于是按下面的步骤配置了一下,再使用ssh或scp登录远程机器时就不需输入密码了:

A主机:192.168.100.82
B主机:192.168.100.83

Linux/Unix双机建立信任

1.在A机生成证书

在A机root用户或其他用户下执行ssh-keygen命令,在需要输入的地方,直接回车,生成建立安全信任关系的证书。

[[email protected] ~]#ssh-keygen -t rsa

注意:在程序提示输入passphrase时直接输入回车,表示无证书密码。
上述命令将生成私钥证书id_rsa和公钥证书id_rsa.pub,存放在用户家目录的.ssh子目录中.

2.查看~/.ssh生成密钥的文件

[[email protected] ~]# ll /root/.ssh/
total 8
-rw------- 1 root root 1675 Apr 27 15:55 id_rsa
-rw-r--r-- 1 root root  400 Apr 27 15:55 id_rsa.pub

3.A对B建立信任关系

将A主机的公钥证书id_rsa.pub复制到机器B主机的root家目录的.ssh子目录中,同时将文件名更换为authorized_keys,此时需要输入B主机的root用户密码(还未建立信任关系)。建立了客户端到服务器端的信任关系后,客户端就可以不用再输入密码,就可以从服务器端拷贝数据了。

scp -r -P 22 /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys

如果做单向认证,这里已经可以实现A到B的免秘钥上传下载了.

4.B对A建立信任关系

在B机上执行同样的操作,建立B对A的信任关系。

[[email protected] ~]#ssh-keygen -t rsa
[email protected] ~]# ll /root/.ssh/
total 8
-rw-r--r-- 1 root root 1678 Apr 27 15:59 authorized_keys
-rw------- 1 root root 1675 Apr 27 15:55 id_rsa
-rw-r--r-- 1 root root  400 Apr 27 15:55 id_rsa.pub

将B主机的公钥证书id_rsa.pub复制到机器A主机的root家目录的.ssh子目录中,同时将文件名更换为authorized_keys

scp -r -P 22 /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys

这样A和B主机就可以互相传文件而不需要密码了.

如果连接反应慢,请修改以下两参数

/etc/ssh/sshd_config
GSSAPIAuthentication no
UseDNS no

重启sshd

service sshd restart

################################################################################

由于上面这样复制文件很麻烦,以下给出更为方便的方法,都在本端计算机进行:

    a、运行:ssh-keygen -t rsa
    b、然后拍几下回车(均选择默认)
    c、运行: ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]:/tmp
    d、输入被控端的密码,就可以了。这时被控端反过来访问主控端的话,也是要输密码的。
这种没测试成功,有机会再测试下吧。
 
 

以上是关于SSH实现双向认证的主要内容,如果未能解决你的问题,请参考以下文章

使用C#实现SSLSocket加密通讯

SSH实现双向免密

使用SSLSocket实现双向认证(keytool证书创建双向认证证书(这里有根证书)的详细步骤以及踩雷)

SSH实现双向免密

SSH实现双向免密

SSH实现双向免密