• 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.
    
    • 1
    • 2

    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
    
    • 1
    • 2

    (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
    
    • 1
    • 2

    二、Host key verification failed

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

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

    Host key verification failed.
    
    • 1

    使用 ssh-keygen生成key

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

    或者直接:

    ssh-keygen -R remote_ip
    
    • 1

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

    # Host remote_ip found: line 1
    /root/.ssh/known_hosts updated.
    Original contents retained as /root/.ssh/known_hosts.old
    
    • 1
    • 2
    • 3
    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. 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    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.
    
    • 1
    • 2
    • 3

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

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

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

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

  • 相关阅读:
    14服务-ClearDiagnosticlnformation
    【C++】超详细入门——lambda表达式
    HTML的学习 Day01
    java中TreeSet的详解与使用
    vue路由&nodeJS环境搭建
    灰度、rgb之间的概念
    java碎碎碎碎碎碎
    2.BIO与NIO区别
    linux(centOs7)部署mysql(8.0.20)数据库
    斯坦福NLP课程 | 第11讲 - NLP中的卷积神经网络
  • 原文地址:https://blog.csdn.net/weixin_45030965/article/details/126747605