TypechoJoeTheme

MetMan's Blog

网站页面

ssh和scp使用介绍

MetMan博 主
2023-10-21
/
0 评论
/
127 阅读
/
558 个字
/
百度已收录
10/21
本文最后更新于 2023年10月21日,已超过 335天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

本文以本地主机A和远程主机B为例说明。

配置本地主机A远程主机B
IPip_aip_b
主机名hostname_ahostname_b
用户名user_auser_b

ssh简单使用

从本地主机A登录到远程主机B

$ ssh user_b@ip_b

以上命令使用默认的SSH端口号22,如果远程主机为了安全考虑,改变了端口号,登录会报以下错误信息

ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection refused

解决方法:命令需要加上选项-p port指定端口号为port。

$ ssh -p 12345 usr_b@ip_b   #这里假设端口号为12345

scp简单使用

从本地主机A传输a.txt文件到远程主机B的目录/home/user_b/data目录下

$ scp a.txt user_b@ip_b:/home/user_b/data

如果需要传输整个目录的文件,需要加上-r选项。

$ scp -r data user_b@ip_b:/home/user_b/data

如果端口号不是22的话,需要加上-P port,注意是大写的P

$ scp -P 12345 -r data user_b@ip_b:/home/user_b/data

以上scp命令是在本地主机A发起的,也可以在远程主机B上发起scp命令,在B机器上使用scp传输本地主机A的文件方法变成:

$ scp user_a@ip_a:/home/user_a/a.txt /home/user_b/data

设置区别在于在一端主机上调用scp命令,必须指定另一端主机的user_name@ip

免密码密钥登录

以上ssh/scp命令使用会要求你输入主机B账号密码(如果scp命令在主机B发起,会要求输入主机A命令)。

对于经常使用的远程主机,可以考虑使用密钥免密码输入方式。

设置流程

  • 在本地主机A生成密钥
$ ssh-keygen -t rsa    #使用rsa算法生成密钥,支持其它密钥算法

命令执行成功会在~/.ssh目录下生成两个文件:id_rsaid_rsa.pub

  • 拷贝id_rsa.pub公钥文件中内容到远程主机B的~/.ssh/authorized_keys文件中

这一步可以手动拷贝粘贴到远程主机B指定文件中,也可以使用封装好的命令ssh-copy-id完成这一操作。

$ ssh-copy-id usr_b@ip_b    #如果端口号不是22,加上-p port
  • 在本地主机A上测试

在本地主机A上使用ssh命令登陆远程主机B,如果不再要求输入密码成功登录B,则说明配置成功。

ssh调试

在执行ssh不成功时,增加输出信息有助于问题诊断,使用-v选项增加诊断信息,多个-v增加输出详细程度。

$ ssh -v user_b@ip_b

$ ssh -vvv user_b@ip_b    #最多3个v

scp也可以使用-v增加诊断信息输出。

kex_exchange_identification错误

scp有时会遇到kex_exchange_identification: Connection closed by remote host错误,可以尝试清空远程主机~/.ssh/known_hosts文件内容。

$ echo > ~/.ssh/known_hosts

参考资料

https://cloud.tencent.com/developer/article/1946906

朗读
赞(0)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

MetMan's Blog

本文链接:

https://blog.metman.top/index.php/archives/25/(转载时请注明本文出处及文章链接)

评论 (0)

互动读者

标签云

最新回复

暂无回复

登录
X
用户名
密码