mac 免密传送 scp 文件到 linux - sh 执行远程命令

1、在 A 上运行 ssh-keygen -t rsa 在/root/.ssh 下生成id_rsa 和 id_rsa.pub 两个文件

在/root/.ssh下复制备份一份id_rsa.pub 命名为 id_rsa.pub.A


2. 在 B 上也同样运行 ssh-keygen -t rsa


3、在 B 的 /root/.ssh 下创建authorized_keys文件 把A 中 id_rsa.pub.A 文件 传到 B /root/.ssh 下
通过 cat 命令 把id_rsa.pub.A 写到 authorized_keys 文件中


  scp ./id_rsa.pub.A B的IP:/root/.ssh
 cat id_rsa.pub.A >> authorized_keys


测试:最终从B服务器拷贝文件到A上,就无需输入密码了
*提示:在生成密钥的过程中,一直Enter即可,否则还是需要输入设置的密码


参考链接:https://blog.csdn.net/goodbyedaoke/article/details/79809509

 

如果本地已经有.ssh了,直接拷贝id_rsa.pub到服务器的~/.ssh/authorized_keys中(注意mac的用户必须和服务器的用户一致,如:mac是root,则服务器也需要是root,如果不是,则需要在linux下创建同名用户,很多教程没写,结果配置大半天,还是连接不上)

配置好之后,如果服务器的文件夹已经用root创建了,需要注意设置文件夹的权限,不然无法拷贝或覆盖,会提示没有权限

* 提示:配置免密文件传送,可先配置并测试好免密登录,这是必然要经过的一步

我的mac用户是我自己的名字,不是root,因此到服务器创建用户:
1. 添加新用户账号
  useradd helloboy

2. 为新用户账号设置密码
  passwd helloboy

3. 为新用户账号赋予root权限
  usermod -a -G root helloboy

然后切换到这个用户:su - helloboy

拷贝mac上的~/.ssh/id_rsa.pub内容到服务器的~/.ssh/authorized_keys中(如果没有这个文件则手动创建下,如果存在则是将内容文本追加到最后)

 

重启sshd服务:
systemctl restart sshd.service
如果sshd服务没有启动,则需要启动该服务(一般都是启动的,可以查看是否启动:systemctl status sshd.service)
启动命令:systemctl start sshd.service
* 额外的可设置服务开启自启:systemctl enable sshd.service

一般错误的解决方案:

1、权限问题:
报错:Authentication refused: bad ownership or modes for directory /home/helloboy/.ssh
当前用户设置以下权限即可(记得要切换到客服端登录服务器的用户下执行,不是在root下,大部分命令都应该是在客户端登录用户下执行的)
chmod 700 .ssh/
chmod 600 .ssh/authorized_keys

2、文件拒绝访问:
报错:scp ~/xxx/xxx.xxx Permission denied
因这个目录不是连接用户创建的,因此要为这个目录授权可读写(也可以删除这个目录,然后通过这个用户创建目录,这样可以不用授权):
chmod 777 ~/xxx

比较有用的解决思路参考:https://blog.csdn.net/lisongjia123/article/details/78513244(这个人写的解决问题的思路,非常棒)
* 上面这篇文章执行了:chmod g-w /home/xxxx,但执行了这个命令后,是把该目录搞成了只读权限,而上传必须有可写权限,他解决的应该另外的错误[权限配置不当]执行的这个命令?网上查了下这个命令,解释为:chmod 修改文件权限 g 是group,表示组权限, w 表示可写,这句话表示当前所属用户的组对这个文件具有写的权限,减号表示去掉这个权限!

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

    • 执行无需交互的远程命令
      ssh username@ip "command",如ssh root@192.168.0.4 "pwd";带端口:ssh u0_a237@192.168.7.169 -p 8022 "cd /storage/emulated/0/roscript; git pull"

      如果要执行多条命令,可以用分号区分:ssh root@192.168.0.4 "pwd; echo 'hello'"

    • termux查看当前登录用户
      >: whoami

    • 手机上termux开启的sshd服务用的是8022端口,而不是默认的22端口
      指定端口用:-p
posted @ 2021-02-06 10:30  流失的痕迹  阅读(478)  评论(0编辑  收藏  举报