ssh免密登录及scp/rsync免密传输文件的方式

      在通过ssh登录其它电脑或通过scp/rsync同其它电脑之间传输文件时,每次都需要输入密码,如下图所示:在windows10上通过ssh登录虚拟机,每次登录都需要输入密码;若端口默认为22,可省略通过-p指定

ssh免密登录及scp/rsync免密传输文件的方式_第1张图片

      可通过将本机上的公钥key存放到要访问电脑的~/.ssh/authorized_keys文件解决ssh免密登录及scp/rsync免密传输文件的问题此方法适用于linux与linux、windows到linux、及linux本机执行scp/rsync的操作;Mac与Mac间应该也是可以的,未验证

      1.通过ssh-keygen产生公私钥:执行:ssh-keygen -t rsa ,如下图所示:连续3次回车,默认生成的文件存放到~/.ssh目录下,也可指定存放到其它目录;密码为空

ssh免密登录及scp/rsync免密传输文件的方式_第2张图片

      执行完ssh-keygen后,会在~/.ssh目录下生成id_rsa和id_rsa.pub两个文件,其中id_rsa为私钥,id_rsa.pub为公钥,需要将公钥内容存放到要操作的电脑的~/.ssh/authorized_keys文件中;其实通过ssh方式从GitHub、GitLab、Gitee、Gerrit上clone代码时,也是需要将此公钥文上传

      2.将id_rsa.pub文件内容拷贝到~/.ssh/authorized_keys:可以有两种方式:cat或sh-copy-id

     (1).通过cat: 首先将id_rsa.pub拷贝到其它电脑上,然后cat,如下图所示:如果~/.ssh目录下没有authorized_keys文件,则会生成一个新authorized_keys文件

ssh免密登录及scp/rsync免密传输文件的方式_第3张图片

     (2).通过sh-copy-id:如下图所示,authorized_keys文件可存放多个公钥,此时~/.ssh/authorized_keys 文件中存放着两个公钥

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

ssh免密登录及scp/rsync免密传输文件的方式_第4张图片

     3.验证是否生效:

     (1).windows10通过ssh登录ubuntu虚拟机:可见通过ssh登录不再需要输入密码

ssh免密登录及scp/rsync免密传输文件的方式_第5张图片

     (2).linux本机执行scp/rsync:此操作过程同不同linux电脑之间完全一致,可见通过scp/rsync传输文件不再需要输入密码

scp -r /home/spring/GitHub/src/* [email protected]:/home/spring/GitHub/dst/
rsync -rav -e ssh --exclude="*.txt" /home/spring/GitHub/src/ [email protected]:/home/spring/GitHub/dst/

ssh免密登录及scp/rsync免密传输文件的方式_第6张图片

     4.若不生效,检查文件权限:

     (1).~/.ssh目录权限需要为700
     (2).~/.ssh/authorized_keys文件权限需要为600

你可能感兴趣的:(Linux,Windows7/10,ssh)