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

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

      可通过将本机上的公钥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-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文件

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

ssh-copy-id -i ~/.ssh/id_rsa.pub spring@127.0.0.1

     3.验证是否生效:

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

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

scp -r /home/spring/GitHub/src/* spring@10.0.2.15:/home/spring/GitHub/dst/
rsync -rav -e ssh --exclude="*.txt" /home/spring/GitHub/src/ spring@10.0.2.15:/home/spring/GitHub/dst/

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

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

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值