scp发送文件忽悠密码
使用SSH密钥认证替代SCP密码登录。我们在使用scp发送文件过程中,执行完命令后需要输入目标服务器的密码,一般情况下没什么问题,但是有一种场景,比如需要使用nohup后台发送大文件,执行完命令后就后台运行了,根本没法输入密码,通过查阅质料倒是有几种自动输入密码的方法,但是不够安全,所以需要使用SSH密钥认证替代SCP密码登录。
1. 生成SSH密钥对
在本地机器执行:
# 生成密钥,执行命令后,提示后按Enter回车键,每一步都按回车键
ssh-keygen -t rsa -b 4096 -C "zhh"# cd到~/.ssh/目录查看查看到生成的密钥文件 .pub文件
cd ~/.ssh/#################
# 命令解释
#################ssh-keygen OpenSSH工具链中用于生成密钥对的命令
-t rsa 指定密钥类型为RSA算法(兼容性最好的传统算法)
-b 4096 设置密钥长度为4096位(安全性更高,推荐值)
-C "zhh" 添加注释内容为"zhh"(通常用于标识密钥用途/所有者)
# cd到 ~/.ssh/ 目录查看查看到生成的密钥文件 .pub文件
2. 将公钥上传到目标服务器
# 将公钥上传到目标服务器,需要输入一次目标服务器的密码
ssh-copy-id -i ~/.ssh/id_rsa.pub username@remote_host
如果多台服务器 都向同一台目标服务器执行 ssh-copy-id发送密钥文件,默认情况下不会覆盖已有的公钥,而是追加新的公钥到 ~/.ssh/authorized_keys 文件中。
3. 到目标服务器查看接收到的密钥文件
cd 到目录 ~/.ssh/ 可以看到密钥文件,例如:authorized_keys
通过scp测试确实是不需要输入密码就可以发送文件到目标服务器
# 后台执行scp发送命令
nohup scp temp.tar.gz root@101.67.11.12:/data/temp/ > send_1.log 2>&1 &