Scp如何使用密码拷贝文件

 更新时间:2025年02月12日 14:12:03   作者:chalmers_15  
在Linux系统中使用scp命令复制文件的两种方法:手动输入密码和使用密钥拷贝,手动输入密码时,系统会提示输入密码;使用密钥拷贝时,需要先生成ssh密钥对,并将公钥添加到远程服务器的~/.ssh/authorized_keys文件中

Scp使用密码拷贝文件

在Linux系统中,scp是一个非常好用的命令,可以用于在本地和远程计算机之间复制文件和目录

使用scp命令复制文件时,你可以使用两种方法来提供密码:

直接拷贝(手动输入密码)

下面是使用scp命令复制文件并手动输入密码的方法:

scp username@remote_host:/path/to/remote/file /path/to/local/directory

在上面的命令中,username是远程服务器的用户名,remote_host是远程服务器的IP地址或域名,/path/to/remote/file是远程服务器上的文件路径,/path/to/local/directory是本地服务器上的目标目录。

当你运行这个命令时,系统会提示你输入密码。输入密码后,文件就会被复制到本地服务器上。

[root@localhost dg]# scp gameSrv.jar root@192.168.2.67:/usr/my_server/
The authenticity of host '192.168.2.67 (192.168.2.67)' can't be established.
ECDSA key fingerprint is SHA256:8KXTdTgAUO6ESWUkYXLMfEVZQH8uSn3jb4DnuH651bY.
ECDSA key fingerprint is MD5:7f:1f:0e:9e:c3:ed:8d:cd:1b:a0:e9:f7:89:1d:e1:4b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.67' (ECDSA) to the list of known hosts.
root@192.168.2.67's password:

使用密钥拷贝(ssh密钥对)

使用ssh-keygen生成ssh密钥对,然后将公钥添加到远程服务器的~/.ssh/authorized_keys文件中,这样在复制文件时就不需要输入密码了。

下面是使用ssh-keygen生成ssh密钥对并将公钥添加到远程服务器的方法:

1.在本地服务器上生成ssh密钥对

这台机器的ip是:192.168.2.66(机器1) (需要在你自己的机器1上执行)

直接下一步 下一步就好。

[root@localhost dg]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:nXsv3egTQHkKpzbBiQ99nkegxmO38WKNyozj48TsptQ root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|         + ..o   |
|        o.*.= o  |
|         o*Oo=   |
|         +=+=*.  |
|        S.o.=oo  |
|       + + + ..  |
|      . E = .. + |
|     . +o. ...+ .|
|      .++.   oo. |
+----[SHA256]-----+
[root@localhost dg]# 
[root@localhost dg]# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2gLD9dsTTaRImIC4mhWxYy2ESe3f/kj+xpBA5ixOJDgN3lUIFbHBZKY0f2ESHV1cZj/DXG2qkJD5dd4dPPJEPsycFmtLI1Y1OKvEIlMK3pSpTNkUZ5aGPxRJi1vwEzqcglZXPmzT5w6s42laSY4o49dSRYBDCxt7Aq6t3IQU+MvxmEpZ+IThsYngBY6vXnhkjNAZ5JGdax1fgpYpvTsFRbFPKEqTvqSu2lpKGCXRclPyF6TkXqAFj1PxgnGZ8gFJ/1z5dk38K0KtQzCdRo8Fx+i1OQ6IDuBMMDGg/TIaNL7Zsqw/KJFs6rrrWVy0QUKE5zpb/HeKxlBorbQOdHXFh root@localhost.localdomain
[root@localhost dg]# 

2.将生成的公钥(默认为~/.ssh/id_rsa.pub)添加到远程服务器上

需要换成自己的用户名和ip(机器2),会提示输入192.168.2.67(机器2)的登录密码

[root@localhost dg]# ssh-copy-id root@192.168.2.67
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.2.67's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.2.67'"
and check to make sure that only the key(s) you wanted were added.

[root@localhost dg]# 

3.测试一下连接看是否需要输入密码

[root@localhost dg]# 
[root@localhost dg]# ssh root@192.168.2.67
Last login: Tue Aug 13 16:59:28 2024 from 192.168.2.35
[root@localhost ~]# 
[root@localhost ~]#

4.拷贝一个文件试试

[root@localhost dg]# 
[root@localhost dg]# scp gameSrv.jar root@192.168.2.67:/usr/my_server/
gameSrv.jar                                                                                                                                                                                         100% 5959KB  95.2MB/s   00:00    
[root@localhost dg]# 
[root@localhost dg]# 

5.做一个脚本复制

IPS=("192.168.99.3" "192.168.99.1" "192.168.99.4")
PORTS=("55898" "33488" "31880")

for i in "${!IPS[@]}"; do
    scp -P ${PORTS[$i]} -r server root@${IPS[$i]}:/usr/my_server/javaServer/dg
    if [ $? -eq 0 ]; then
        echo "server upload to ${IPS[$i]} successful!"
    else
        echo "server upload to ${IPS[$i]} failed!"
    fi

    scp -P ${PORTS[$i]} gameSrv.jar root@${IPS[$i]}:/usr/my_server/javaServer/dg
    if [ $? -eq 0 ]; then
        echo "gameSrv upload to ${IPS[$i]} successful!"
    else
        echo "gameSrv upload to ${IPS[$i]} failed!"
    fi

done

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解CentOS7下PostgreSQL 11的安装和配置教程

    详解CentOS7下PostgreSQL 11的安装和配置教程

    这篇文章主要介绍了CentOS7下PostgreSQL 11的安装和配置教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Linux zabbix自定义监控及报警实现过程解析

    Linux zabbix自定义监控及报警实现过程解析

    这篇文章主要介绍了linux zabbix自定义监控及报警实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 使用FileZilla从Linux系统下载文件的方法

    使用FileZilla从Linux系统下载文件的方法

    最近做项目,遇到这样的需求,要求将Linux系统的的某个文件夹下载到我Windows系统某个文件夹里,怎么实现这个功能呢?下面脚本之家小编给大家带来了使用FileZilla从Linux系统下载文件的方法,感兴趣的朋友一起看看吧
    2018-07-07
  • 详解Linux添加/删除用户和用户组

    详解Linux添加/删除用户和用户组

    本文总结了Linux添加或者删除用户和用户组时常用的一些命令和参数。具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-10-10
  • CentOS7安装PHP7 Redis扩展的方法步骤

    CentOS7安装PHP7 Redis扩展的方法步骤

    这篇文章主要介绍了CentOS7安装PHP7 Redis扩展的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • VMware下Ubuntu16.04镜像完整安装教程

    VMware下Ubuntu16.04镜像完整安装教程

    这篇文章主要为大家详细介绍了VMware下Ubuntu16.04镜像完整安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • CentOS7下如何配置ip forward(虚拟路由器)

    CentOS7下如何配置ip forward(虚拟路由器)

    本篇文章主要介绍了CentOS7下如何配置ip forward(虚拟路由器),非常具有实用价值,需要的朋友可以参考下
    2017-09-09
  • linux touch命令用法实例

    linux touch命令用法实例

    在本篇文章里小编给各位整理的是关于linux touch命令的相关知识点内容,有需要的朋友们可以参考学习下。
    2019-10-10
  • Ubuntu 18.04中截图工具shutter的编辑按钮不可用的解决办法

    Ubuntu 18.04中截图工具shutter的编辑按钮不可用的解决办法

    Shutter是一个由第三方提供的在Ubuntu上运行的截图工具。这篇文章主要介绍了Ubuntu 18.04中截图工具shutter的编辑按钮不可用的解决办法及Ubuntu18.04 截图工具推荐,需要的朋友可以参考下
    2018-08-08
  • ubuntu启用ssh全过程

    ubuntu启用ssh全过程

    文章介绍了在新安装的Ubuntu系统中,因默认国外源访问慢,需更换为国内如清华镜像源,并提供了源备份、配置更改及更新方法,此外,还讲解了SSH服务安装、配置和使用finalshell远程连接服务器的流程
    2025-10-10

最新评论