Linux免密码登录
(抱歉,忘了从哪儿转载的,原创的作者看到可以私信我增加链接)
Linux主机之间一般都用ssh登录,用scp拷贝,但有的时候用脚本拷贝文件时,会发现scp没法自动进行,需要输密码才能继续,或者经常登录某台机器,而密码比较复杂而且很长,这时候可以试试生成密钥对,免密码登录。
假设两台机器,A,B,都是Linux主机,
A为本地主机(即用于控制其他主机的机器)
B为远程主机(即被控制的机器Server), 假如ip为10.8.20.10
在A上的命令(注:希望用A上哪个用户登录B,就在哪个用户下做以下步骤,以下的例子用的是root):
# ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)
# ssh 10.8.20.10 "mkdir .ssh;chmod 0700 .ssh" (需要输入密码)
# scp ~/.ssh/id_rsa.pub 10.8.20.10:.ssh/id_rsa.pub (需要输入密码)
在B上的命令(注:希望A登录到B的哪个用户,就在哪个用户下做以下步骤,以下的例子用的是root):
# touch ~/.ssh/authorized_keys (如果已经存在这个文件, 跳过这条)
# chmod 600 ~/.ssh/authorized_keys (如果前面已经存在这个文件, 可以跳过这条,但一定要保证文件属性只有owner可读)
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (将id_rsa.pub的内容追加到 authorized_keys 中)
回到A机器:
# ssh 10.8.20.10 (不需要密码, 登录成功)
上述的例子是AB上用户名都是root,如果A机器上用户user想登录到B机器上的work用户,则A以user登录生成密钥对,放到user目录的.ssh下,B以work登录,将A上生成的id_rsa.pub追加到work目录的.ssh下,最后从A上登录时,用下面命令即可:
$ ssh work@10.8.20.10
注意,authorized_keys的属性一定要改成只有owner可读写,否则为安全考虑,在登录时系统还是会要求输入密码。
这时试试从A上用scp拷文件到B,会发现也是直接就执行而不需要密码了。