linux ssh 免密登录

1 ubuntu 配置ssh免密登录
2 centos 配置ssh免密登录
3 帮助手册

1 ubuntu 配置ssh免密登录

  1. 确认需要集群的主机名与IP地址,修改主机名字的命令sudo gedit /etc/hostname
    修改hosts映射vi /etc/hosts
    127.0.0.1 g
    192.168.1.254 g2
  2. 如果修改了主机名,请重启,没有则下一步
  3. 在每个主机上都下载ssh sudo apt-get install openssh-server
  4. 关闭防火墙,sudo ufw disable
  5. 生成公钥密钥,ssh-keygen -t rsa -b 4096 -P '' ,-P '' 就表示空密码。
  6. 建立信任连接列表,cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
  7. 无密码登录主机,ssh localhost,退出exit
  8. 修改hosts文件,添加其他节点,sudo gedit /etc/hosts
  9. 拷贝主节点信息到其他节点,
    cat ~/.ssh/id_rsa.pub | ssh guanhp@192.168.1.254 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
    scp .ssh/id_rsa.pub guanhp@192.168.1.254:/home/guanhp/id_rsa.pub
  10. 无密码登录其他节点,ssh g2
  11. 若ssh免密登录 命令无法生效,直接复制粘切也可以! 将公钥 内容复制到 /home/.ssh/authorized_keys
  12. 更便捷的方法,免密码登录与免密码拷贝文件
  13. 附加 如果执行命令ssh g2还需要输入密码,请设置.ssh目录所有者及其权限
#authorized_keys的权限要是600!!!
chown username: ~/.ssh
chown username: ~/.ssh/*
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/*     (authorized_keys  known_hosts)

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

2 centos 配置ssh免密登录

2.1 修改主机名

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

2.2 修改hosts文件

vi /etc/hosts
192.168.1.245 g3
192.168.1.246 g4

2.3 创建新用户并设置密码

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

关闭防火墙(centos 6.x)

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

关闭防火墙iptables

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

2.4 修改sshd 配置文件

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

重启sshd服务

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

2.5 本机生成RSA公钥 与 私钥

ssh-keygen -t rsa -P ''

2.6 公钥证书导入到本机

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
完成这一步,再按照步骤4修改相关文件权限,可以免密码登录本机。可以输入以下命令验证。
ssh localhost

2.7 公钥证书导入到目标主机

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

2.8 更改权限

# chown guanhp: ~/.ssh
# chown guanhp: ~/.ssh/*
# chmod 700 ~/.ssh  
# chmod 600 ~/.ssh/authorized_keys   
  或 chmod 600 ~/.ssh/*

2.9 测试

ssh root@192.168.1.246ssh root@g4

3 帮助手册

3.1 ssh-copy-id

ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。

语法

ssh-copy-id [-i [identity_file]] [user@]machine

选项

-i:指定公钥文件

实例

1、把本地的ssh公钥文件安装到远程主机对应的账户下:
ssh-copy-id user@server
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

3.2 ssh-keygen

查看帮助

$ ssh-keygen --help
-b:指定密钥长度;
-e:读取openssh的私钥或者公钥文件;
-C:添加注释;
-f:指定用来保存密钥的文件名;
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
-l:显示公钥文件的指纹数据;
-N:提供一个新密语;
-P:提供(旧)密语;
-q:静默模式;
-t:指定要创建的密钥类型。

-t 指定要创建的密钥类型,如:-t dsa | ecdsa | ed25519 | rsa | rsa1

$ ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_ecdsa):

-b bits 指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位

$ ssh-keygen -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa):

-C comment 提供一个注释。生成git密钥的时候都会要求注释中写入邮箱名字。

root@g:~# ssh-keygen -t rsa -b 4096 -C "hi@xyzla.com"
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:rBgsYgbYi9WPG1jEw1BB5l3Emh6anxj+MDd5H2Lcoak hi@xyzla.com
The key's randomart image is:
+---[RSA 4096]----+
|  .**. oo        |
|.. =+. ..        |
|o o +..o         |
|.o = o+.         |
|oo+ =+..S .      |
|o. .+=.+ + .     |
|   .=+=.B o      |
|    o+o= o .     |
|     .E   .      |
+----[SHA256]-----+

-f filename 指定密钥文件名 -l 显示公钥文件的指纹数据。它也支持 RSA1 的私钥。对于RSA和DSA密钥,将会寻找对应的公钥文件,然后显示其指纹数据。

root@g:~/.ssh# ssh-keygen -lf id_rsa.pub
4096 SHA256:rBgsYgbYi9WPG1jEw1BB5l3Emh6anxj+MDd5H2Lcoak hi@xyzla.com (RSA)

-E 用md5的方式查看指纹数据

root@g:~/.ssh# ssh-keygen -E md5 -lf id_rsa.pub
4096 MD5:9d:80:27:08:ff:37:35:29:19:ea:25:b6:b8:9c:ae:ef hi@xyzla.com (RSA)

3.3 ssh

ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。

语法

ssh (选项) (参数)

选项

-1:强制使用ssh协议版本1;
-2:强制使用ssh协议版本2;
-4:强制使用IPv4地址;
-6:强制使用IPv6地址;
-A:开启认证代理连接转发功能;
-a:关闭认证代理连接转发功能;
-b:使用本机指定地址作为对应连接的源ip地址;
-C:请求压缩所有数据;
-F:指定ssh指令的配置文件;
-f:后台执行ssh指令;
-g:允许远程主机连接主机的转发端口;
-i:指定身份文件;
-l:指定连接远程服务器登录用户名;
-N:不执行远程指令;
-o:指定配置选项;
-p:指定远程服务器上的端口;
-q:静默模式;
-X:开启X11转发功能;
-x:关闭X11转发功能;
-y:开启信任X11转发功能。

参数

  • 远程主机:指定要连接的远程ssh服务器;
  • 指令:要在远程ssh服务器上执行的指令。
  • qq_43638135
    妲己再美究为妃: 博主没有想过自己接一些私活干吗?我现在还没毕业,但是我也确实听说外挂市场自动化游戏脚本市场挺火热的,并且报酬也很丰厚,但是具体的我也不是很清楚,求解答。 (1个月前 #47楼) 查看回复(2) 举报 回复
    22