ssh免密登陆

来源:互联网 发布:我做淘宝创业5年失败了 编辑:程序博客网 时间:2024/05/22 07:51

两台主机间免密操作

很多时候,我们都需要ssh免密操作,因为shell脚本中无法输入密码

ssh登陆、scp文件传输等都需要免密。

总之,如果主机A需要在主机B执行命令,就必须登陆主机B,这时候,我们可以通过配置,让主机A的某个用户可以免密登陆主机B,这样就可以了。

登陆------->执行命令或脚本

例子:
在主机A上进行scp文件传输,不论是本地传给远程,还是远程传输到本地,都需要远程主机B的密码,这时候,我们就可以通过配置免密,使得我们可以做到A->B和B<-A的文件传输都不需要远程主机B的密码。

这里写图片描述

ssh登陆流程

ssh中,主机A发送登陆请求的时候,会将公钥也带去,当主机B收到主机A的远程登陆请求的时候,去查看登陆用户所在家目录的.ssh/authorized_keys文件,如果当前的登陆请求的公钥在这个文件中,就不去验证密码,直接登陆成功。如果不存在,就去验证密码的正确性。

这里写图片描述

所以,通过上图我们清楚的知道,想要用户Tom在主机A中免密登陆主机B,
只要在A总生成公钥,然后放到B的/home/tom/.ssh/authorized_keys目录即可。

1.生成公钥和私钥

输入ssh-keygen -t rsa -P ''然后回车,生成公钥和私钥,结果如下:

ssh-keygen -t rsa -P ''Generating public/private rsa key pair.Enter file in which to save the key (/home/hjs/.ssh/id_rsa): Created directory '/home/hjs/.ssh'.Your identification has been saved in /home/hjs/.ssh/id_rsa.Your public key has been saved in /home/hjs/.ssh/id_rsa.pub.The key fingerprint is:f4:99:87:a1:06:8b:5a:7d:f1:88:b3:34:27:6c:94:4e hjs@localhost.localdomainThe key's randomart image is:+--[ RSA 2048]----+|                 ||       .         ||      E o .      ||     B = * =     ||    o % S * .    ||   o o O   .     ||  .   .          ||                 ||                 |+-----------------+

看到已经生成两个文件:

id_rsa         id_rsa.pub

id_rsa是私钥、id_rsa.pub是公钥

-P表示密码,-P ” 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。如果原来的~/.ssh文件夹已经存在,回车后要输入y,以确认重新生成公钥和私钥。

2.公钥放到远程主机

scp .ssh/id_rsa.pub hjs@8.8.8.8:/home/hjs/id_rsa.pubThe authenticity of host '8.8.8.8 (8.8.8.8)' can't be established.ECDSA key fingerprint is 1b:ec:cf:4c:06:15:1b:8e:27:75:6d:9e:6e:66:f7:6f.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '8.8.8.8' (ECDSA) to the list of known hosts.hjs@8.8.8.8's password: id_rsa.pub   

现在就可以ssh、scp操作就可以免去远程主机B的密码了

参考文献:
http://chenlb.iteye.com/blog/211809

原创粉丝点击