How to Setup Passwordless SSH Login

ubuntu

  1. 修改 主机名字
  • 确认需要集群的 主机名IP/etc/hostname
  1. 修改 hosts 映射

/etc/hosts

127.0.0.1       g  
192.168.1.254   xyzla.com
  1. 如果修改了主机名,请重启,没有则下一步

  2. 安装 ssh sudo apt install openssh-server

  3. 关闭防火墙,sudo ufw disable

  4. 生成公钥密钥,ssh-keygen -t rsa -b 4096 -C 'xqghp@126.com' -P ''

  5. 建立信任连接列表,cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

  6. 无密码登录主机,ssh localhost,退出 exit

  7. 修改 hosts 文件,添加其他节点,sudo vi /etc/hosts

  8. 拷贝主节点信息到其他节点,

cat ~/.ssh/id_rsa.pub | ssh g@xyzla.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

scp .ssh/id_rsa.pub guanhp@xyzla.com:/home/guanhp/id_rsa.pub

  1. 无密码登录其他节点,ssh xyzla.com

  2. 若 ssh 免密登录 命令无法生效,直接复制粘切也可以! 将公钥 内容复制到 ~/.ssh/authorized_keys

  3. 如果执行命令 ssh xyzla.com 还需要输入密码,请设置 .ssh 目录所有者及其权限

.ssh 文件夹的权限是 700 authorized_keys 的权限 是 600!!! id_rsa 的权限 是 600

mkdir -p ~/.ssh

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa* 
chmod 600 ~/.ssh/authorized_keys 
chmod 600 ~/.ssh/known_hosts

chown dev:dev ~/.ssh
chown dev:dev ~/.ssh/*

dev@java-master:~$:~$ ll ~/.ssh
total 24
drwx------ 2 dev dev 4096 May 24 20:52 ./
drwxr-xr-x 4 dev dev 4096 May 24 21:22 ../
-rw------- 1 dev dev  781 May 24 21:20 authorized_keys
-rw------- 1 dev dev 1679 May 24 20:43 id_rsa
-rw------- 1 dev dev  391 May 24 20:43 id_rsa.pub
-rw------- 1 dev dev  888 May 24 21:21 known_host

centos

修改 主机名

  • centos 6.9 :vi /etc/sysconfig/network
  • centos 7.x :vi /etc/hostname

修改 hosts 文件

vi /etc/hosts
192.168.1.245 g3
192.168.1.246 g4

创建新用户并设置密码

useradd dev
passwd dev 
su dev #切换到用户guanhp

关闭防火墙( centos 6.x )

su root
vi /etc/selinux/config
修改SELINUX=enforcing 为SELINUX=disabled
:wq

关闭防火墙 iptables

service iptables stop  #服务器重启后会失效
chkconfig iptables off #重启自动关闭防火墙

修改 sshd 配置文件

vi /etc/ssh/sshd_config
找到以下内容,并去掉注释符“#”
RSAAuthentication yes 
PubkeyAuthentication yes 
AuthorizedKeysFile .ssh/authorized_keys

重启 sshd 服务

service sshd restart
# or
/etc/init.d/sshd restart

本机生成 RSA 公钥 与 私钥

ssh-keygen -t rsa -P ''

公钥证书导入到本机

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

完成这一步,再按照步骤4修改相关文件权限,可以免密码登录本机。可以输入以下命令验证。

ssh localhost

公钥证书导入到目标主机

scp ~/.ssh/id_rsa.pub root@192.168.1.246:/root/.ssh/authorized_keys

更改权限

sudo chown dev:dev ~/.ssh
sudo chown dev:dev ~/.ssh/*
sudo chmod 700 ~/.ssh  
sudo chmod 600 ~/.ssh/authorized_keys   
sudo chmod 600 ~/.ssh/id_rsa_*
sudo chmod 600 ~/.ssh/known_hosts

测试

ssh root@192.168.1.246ssh root@g4