scp每次都要输入密码很麻烦, 解决方案如下:
在windows上开发,用户名是xw,你有一台linux服务器192.168.199.181,用户名是root。现在准备上传一些文件到服务器上。
为方便叙述,w表示windows, u表示Linux服务器,w$表示在windows端输入的命令, u$表示在Linux端输入的命令。
1、首先在w端生成一对key。
w$ ssh-keygen -t rsa
一直按enter,则会在C:用户的 .ssh文件夹下生成id_rsa和id_rsa.pub两个文件。
其次确保u端的ssh配置允许root用户登录。
u$ vim /etc/ssh/sshd_config
确保PermitRootLogin为yes。我测试的服务器默认就是yes,因此无需更改。
将win端的id_rsa.pub上传到服务器的~/keys文件夹
u$ mkdir ~/keys
上传文件(此步骤可以直接通过远程进行上传,不用敲命令):
w$ scp ~/.ssh/id_rsa.pub root@192.168.199.181:~/keys
将上传的key添加到ssh的授权列表,如果.ssh文件夹不存在,使用创建。
u$ mkdir ~/.ssh
u$ cat ~/keys/id_rsa.pub>>~/.ssh/authorized_keys
完成!
win端再尝试使用scp命令, 你会发现无需输入密码。这时,目标主机与本机已建立信任连接。
如果出现不需要输入密码,但是要求输入建立连接的 yes,查看对应目标文件夹的权限是否可写入。