scp 远程拷贝不需要输入密码

本文介绍如何通过生成RSA密钥对实现SSH免密码登录。详细步骤包括生成密钥、设置.ssh目录权限及复制公钥至目标主机。适用于批量部署及自动化脚本。

1. 生成密匙对,我用的是rsa的密钥。使用命令 "ssh-keygen -t rsa"
生成的过程中提示会提示输入一个不同于你的password的密码,直接回车,让它空着,这样以后ssh就不用输入密码了。
其中公共密钥保存在 ~/.ssh/id_rsa.pub
私有密钥保存在 ~/.ssh/id_rsa

2. 然后改一下 .ssh 目录的权限,使用命令 "chmod 755 ~/.ssh" (不需要这步)

3. 之后把这个密钥对中的公共密钥复制到你要访问的机器的相应账号的.ssh目录下,并保存为authorized_keys.
   如 [huchao@localhost .ssh]$ scp id_rsa.pub cll@10.8.8.32:/home/cll/.ssh/authorized_keys
   之这样就大功告成了。之后你再用ssh scp sftp 之类的访问那台机器时,就不用输入密码了,用在script上更是方便。
   
服务器双向认证都无需密码:

  
ssh-keygen -t rsa

一直回车(呵呵)

[root@jinqiang ~]# ssh-keygen -t rsa
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:
2e:e3:c7:a9:56:93:93:2b:12:38:a2:c3:55:61:06:ab root@jinqiang
[root@jinqiang ~]#
[root@jinqiang .ssh]# scp id_rsa.pub root@10.8.8.5:/root/pub12

登录到10.8.8.8.5

cd /root
cat pub12 >> .ssh/authorized_keys

 

 

既实现了从jinqiang这台服务器上scp文件到10.8.8.5上,无需密码切安全

 

<think>嗯,用户这次的问题是关于在CentOS系统上配置SCP免密文件拷贝的。从问题描述看,用户应该是个系统管理员者开发者,需要在服务器之间高效传输文件。ta明确提到了“CentOS”和“免密码”,说明需求很具体。 用户可能正在搭建分布式环境,者需要频繁在多台机器间同步数据。手动输入密码显然效率太低,还可能影响自动化脚本的运行。ta的深层需求其实是实现服务器间的无缝协作,减少人工干预。 我注意到用户提供了详细的参考引用,包括建立SSH信任、密钥生成、公钥分发等步骤。这些引用质量错,特别是引用[3]的操作步骤非常清晰。过引用[4]关于双向配置的部分可能有点多余,因为用户只问了单向拷贝。 在整理方案,我需要特别注意: 1. 密钥类型的选择:现在推荐用更安全的ed25519,但传统rsa兼容性更好 2. 权限设置:.ssh目录700和authorized_keys文件600这两个权限必须严格 3. 防火墙问题:很多用户会忽略223端口是否开放 4. SELinux的影响:特别是CentOS 7以上版本 用户可能遇到的坑包括: - 如果已有密钥却重新生成会覆盖原有密钥 - 公钥文件末尾缺少换行导致验证失败 - 目标服务器.ssh目录属主对 我应该把验证步骤写得详细些,比如用ssh -v调试连接。还可以补充个常见问题排查表,这样用户遇到问题能快速定位。对了,安全方面要提醒用户禁止root登录,这是很多教程忽略的。 相关问题的设计要围绕扩展场景: 1. 多服务器配置是自然延伸 2. 端口问题实际中经常遇到 3. 安全加固是必要提醒 4. 自动化脚本则是高级需求 最后决定用分步式说明,每步包含操作命令和原理注释。验证环节特别加入“首次连接需确认指纹”的提示,避免用户卡在这步。防火墙部分单独强调,因为云服务器经常默认关闭端口。</think>以下是在CentOS系统中配置SCP免密文件拷贝的详细步骤,基于SSH密钥认证实现: ### 步骤1:生成密钥对(源服务器操作) ```bash ssh-keygen -t rsa -b 4096 ``` * 连续按3次回车(默认路径`~/.ssh/id_rsa`,设置密码) * 生成两个文件: `id_rsa`(私钥,权限必须为600) `id_rsa.pub`(公钥,需传输到目标服务器) ### 步骤2:拷贝公钥到目标服务器 #### 方法1:使用`ssh-copy-id`(推荐) ```bash ssh-copy-id -i ~/.ssh/id_rsa.pub username@target_ip ``` * 首次需输入目标服务器密码 * 自动将公钥追加到目标服务器的`~/.ssh/authorized_keys` #### 方法2:手动复制(无`ssh-copy-id`) ```bash # 在源服务器执行 scp ~/.ssh/id_rsa.pub username@target_ip:~/tmp.pub # 登录目标服务器执行 mkdir -p ~/.ssh cat ~/tmp.pub >> ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys rm ~/tmp.pub ``` ### 步骤3:验证免密登录 ```bash ssh username@target_ip ``` * 若直接登录成功,表明密钥配置正确 ### 步骤4:执行免密SCP传输 ```bash # 从本地复制到远程 scp /local/file.txt username@target_ip:/remote/path/ # 从远程复制到本地 scp username@target_ip:/remote/file.txt /local/path/ ``` 此无需输入密码即可完成传输[^3]。 --- ### 关键配置检查 | **项目** | **目标服务器要求** | |-------------------|--------------------------------------| | 文件权限 | `.ssh`目录700, `authorized_keys`文件600 | | SELinux状态 | 若启用可能需`restorecon -Rv ~/.ssh` | | SSH服务配置 | 确认`/etc/ssh/sshd_config`包含: | | | `PubkeyAuthentication yes` | | | `AuthorizedKeysFile .ssh/authorized_keys` | --- ### 常见问题排查 1. **权限错误** ```bash chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys ``` 2. **SELinux阻止** ```bash restorecon -Rv ~/.ssh # 修复上下文 setenforce 0 # 临禁用SELinux(测试用) ``` 3. **SSH服务未重启** ```bash sudo systemctl restart sshd ``` 4. **防火墙拦截** ```bash sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload ``` > 安全提示:生产环境建议使用`ed25519`密钥(`ssh-keygen -t ed25519`)并禁用密码登录[^4]。 --- ### 相关问题 1. 如何配置多台服务器之间的双向免密SCP传输? 2. SCP传输速度慢如何优化? 3. 非默认SSH端口(非22)如何实现免密SCP? 4. 如何通过SCP实现目录的实同步? 5. 如何限制免密登录用户的执行权限? [^1]: 通过SSH密钥认证实现自动化文件传输 [^3]: 公钥分发与权限配置是免密操作的核心 [^4]: 密钥类型选择与安全策略增强
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值