Linux scp命令

一、scp简介

scp可以跨越两台不同的主机传递文件:

scp — OpenSSH secure file copy
	 -r      Recursively copy entire directories.  Note that scp follows symbolic links encountered in the tree traversal.

SCP在网络上的主机之间复制文件。它使用ssh进行数据传输,使用与ssh相同的身份验证并提供相同的安全性。如果需要进行身份验证,SCP将要求输入密码。

(1) 将本机的目录dir或者文件file拷贝远程主机的remote_dir 下:
remote_username:远程用户名
remote_ip:远程ip

scp -r dir remote_username@remote_ip:remote_dir 
scp file remote_username@remote_ip:remote_dir

(2) 将远程主机的remote_dir 下的目录remote_dir或者文件remote_file拷贝到本机的目录下host_dir:
只要将从本地复制到远程的命令的后2个参数调换顺序即可:

scp -r remote_username@remote_ip:remote_dir host_dir
scp  remote_username@remote_ip:remote_file host_dir

二、Host key verification failed

远程拷贝给新安装的主机有可能会失败,远程拷贝时如果出现 scp -r dir root@remote_ip:/remote_dir:
在这里插入图片描述
出现该问题的原因:
(1)计算机的SSH密钥已经更改,但是客户端机器上保存的密钥与服务器上的密钥不匹配。这可能是因为曾经连接到同一个IP地址但是是另一台计算机(比如可能就是因为客户端机器重装过系统),或者因为计算机的SSH密钥已经被更改,这时候就会校验不通过。

(2)正在首次连接到该计算机,但是你没有将计算机的SSH密钥添加到你的信任列表中。

Host key verification failed.

使用 ssh-keygen生成key

 ssh-keygen -f /remote_dir/.ssh/known_hosts -R remote_ip

或者直接:

ssh-keygen -R remote_ip

生成成功,这样就可以远程拷贝了。

# Host remote_ip found: line 1
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old
ssh-keygen — OpenSSH authentication key utility
	-f filename
             Specifies the filename of the key file.

	 -R hostname | [hostname]:port
             Removes all keys belonging to the specified hostname (with optional port number) from a known_hosts file. 

ssh-keygen 为 ssh 生成、管理和转换身份验证密钥,ssh-keygen 可以创建供 SSH 协议使用的密钥,要生成的密钥类型使用 -t 选项指定。 如果不带任何参数调用,ssh-keygen 将生成一个 RSA 密钥。

三、vscode(windows) ssh远程连接出现Host key verification failed

当使用VSCode SSH远程连接Linux服务器时,如果在Windows上出现"Host key verification failed"错误消息,通常是由于服务器的SSH密钥发生了变化而导致的。这可能是因为你曾经连接过该服务器,但是服务器的SSH密钥已经发生了变化,比如在该服务器上重装过Linux操作系统。

1.打开Windows PowerShell或者命令提示符,使用ssh命令手动连接到服务器。在连接时,你将会收到一个警告消息,提示服务器的SSH密钥发生了变化。输入"yes"以接受新的密钥。

#ssh <用户名>@<服务器地址>
......
Host key verification failed.

如果你确认服务器的SSH密钥已经更改,请手动删除你Windows本地计算机上保存的旧密钥。在Windows本地计算机上,打开命令行并输入以下命令:

ssh-keygen -R <服务器地址>

这将从你的known_hosts文件中删除服务器的旧SSH密钥。

然后再次使用VSCode SSH远程连接到服务器,这将会提示你接受新的SSH密钥。输入"yes"以接受新的密钥,并连接到服务器。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值