linux ssh scp无密码登录
一. 应用场景
假如你Linux Client是客户端, Server为服务器,用户名为user。现在要配置从Client到Server的无密码SSH登录或者无密码的scp拷贝。
例如客户端Client(10.1.10.125) 要 ssh 或者scp 到服务器Server(10.1.10.129),125端命令如下
ssh root@10.1.10.129
scp ** root@10.1.10.129 **
二. 实现方法
1:在Client(10.1.10.125)上执行ssh-keygen -t rsa命令,上产生一对密钥,需要输入的地方直接回车,接受缺省值即可,输出如下:
[user@Client .ssh]$ ssh-keygen -t rsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_dsa.
Your public key has been saved in /home/user/.ssh/id_dsa.pub.
The key fingerprint is:
22:0c:2e:64:09:2e:a9:f1:37:c5:ee:d9:e5:57:92:b4 user@Client
这时候,在/home/user/.ssh(即10.1.10.125的~/.ssh)目录下,存有一对密钥id_dsa和id_dsa.pub。
2. 将公钥id_dsa.pub以任何方式上传到Server的~/.ssh目录下,并且文件名是authorized_keys
小注:如果Server的~/.ssh目录下有authorized_keys文件则需要追加上去,如果没有直接拷贝上去即可
拷贝命令如下:从125拷贝到129上,scp ~/.ssh/id_rsa.pub root@10.1.10.129:~/.ssh/authorized_keys
追加命令如下:在129上追加, ssh root@10.1.10.125 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. 修改权限
客户端125上修改: chmod 755 ~/.ssh
服务端129上修改: chmod 600 ~/.ssh/authorized_keys
三、原理
使用一种被称为"公私钥"认证的方式来进行ssh登录. "公私钥"认证方式简单的解释是
首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa) 然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥 当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了客户端ssh-keygen -t rsa 会创建~/.ssh/id-ras.pub id-ras
公钥:/root/.ssh/id-ras.pub
私钥:/root/.ssh/id-ras
chmod 755 /root/.ssh (可不做)
把公钥复制到需要访问的机器上 /.ssh/ 并改名保存为 authorized_keys ,
如果是多台客户端机器需要无密码登录服务器,则客户端机器各自产生公钥,然后将公钥追加到服务器的authorized_keys即可.
五.参考文章:
http://blog.chinaunix.net/uid-26557245-id-3403269.html
http://www.linuxidc.com/Linux/2011-02/31921.htm
http://xiang.lf.blog.163.com/blog/static/12773332220128142445324/