linux多台服务器之间免密登录

方式1:秘钥(推荐)

A\B机器,如果A访问B免密,就把A的公钥给B,反之亦然

步骤1:在 A 上生成密钥对(一路回车)

生成一对 2048 位 的 RSA 密钥,私钥文件叫 id_rsa,放在当前用户的 .ssh 目录下。

ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N ""
  1. -t rsa
    作用:告诉 ssh-keygen 我要生成哪种类型的密钥。
    rsa 只是其中一种,还可以选 ed25519、ecdsa、dsa 等。
    目前老系统兼容性最好的是 rsa,新系统推荐更快更短的 ed25519。
  2. -b 2048
    作用:指定 密钥长度(位数)。
    2048 表示 2048 bit(比特)。数字越大越安全,但运算也越慢。
    rsa 的常见取值:
    1024(已不安全,不推荐)
    2048(主流,够用)
    4096(更保险,SSL 证书/高安全场景)
  3. -f ~/.ssh/id_rsa
    作用:指定 私钥文件名和存放路径。
    如果不写 -f ,ssh-keygen 会默认把私钥放在
    ~/.ssh/id_rsa ,公钥放在 ~/.ssh/id_rsa.pub 。
    写了 -f /tmp/my_key ,就会生成:
    私钥: /tmp/my_key
    公钥: /tmp/my_key.pub

步骤2:方式1:把公钥发到 B(一次性输密码)

 ssh-copy-id -i ~/.ssh/id_rsa.pub root@远程服务器

如果 B 的 ssh 端口不是 22,加 -p 端口号
例: ssh-copy-id -p 2222 -i ~/.ssh/id_rsa.pub root@远程服务器
输完 B 的密码后,公钥会自动追加到 B 的
/root/.ssh/authorized_keys 文件里。

步骤2:方式2:把公钥发到 B

U 盘/微信/邮件人肉拷贝

  1. 在 A 机器上把公钥拷出来
cat ~/.ssh/id_rsa.pub
  1. 把屏幕上的整行字符串复制到剪贴板。
  1. 登录 B 机器,粘贴追加到 authorized_keys
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "刚才那整行字符串" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

步骤 3:验证免密登录

ssh root@B_IP

成功的话不再提示输入密码。

常见错误:

-bash: ssh-copy-id: command not found //提示命令不存在
解决办法:yum -y install openssh-client

现象解决
仍要密码1) B 上 `~/.ssh` 权限必须是 700,`authorized_keys` 6002) `sshd_config` 里 `PubkeyAuthentication yes` & `AuthorizedKeysFile .ssh/authorized_keys`
提示 `Permission denied (publickey、gssapi-keyex、gssapi-with-mic)`查看 `/var/log/secure`,多半是权限或 SELinux 拦了,临时关闭测试:`setenforce 0`
端口非 22`ssh-copy-id “-p 2222 root@B_IP”` 注意引号

方式2:自动输入密码

先安装软件包

yum -y install epel-release   # 如已装可跳过
yum -y install sshpass

使用 sshpass + scp 把远程文件 非交互式 拷贝到本地

sshpass -p '远程密码' \
  scp -P 1022 -o StrictHostKeyChecking=no \
  user@远程IP:/remote/path/file.txt  /local/path/

首次连接仍会提示 ECDSA key fingerprint ,加 -o StrictHostKeyChecking=no 可跳过。

若要拉整个目录,加 -r , scp -r -P 1022 -o StrictHostKeyChecking=no

本地文件拷贝到远程

# 把本地 /data/a.tar.gz 拷到 192.168.1.100 的 /backup/
sshpass -p '远程密码' \
  scp -o StrictHostKeyChecking=no \
  /data/a.tar.gz root@192.168.1.100:/backup/
© 版权声明
THE END
点赞12 分享