经过密钥 SSH 登陆设置

理解:

1. 一直以来都是经过密码远程 ssh 登陆到 linux服务器
2. 最近学习 Docker 老是看到你们都设置成密钥方式登陆
3. 除了密码被破解的风险以外,到底还有哪些好处?

4. 看到有个文章写到:若是有员工离开,只须要删除他的公钥,这还有点儿用!
5. 可是密码仍是要修改的吧!改密码和删除公钥,哪一个更直接有效?

测试环境、测试目标

linux 客户端(192.168.1.191): 环境: VisualBox虚拟机 ubuntu 18.04 Server
Mac 客户端 (XXXXXXXXXXXXXX):
Windows 客户端(192.168.1.174): 环境: VisualBox虚拟机 Win10

服务端(192.168.1.192): 环境: VisualBox虚拟机 ubuntu 18.04 Server

目的:使用密钥方式ssh登陆到 192 服务器

方式说明:

1. 有些文章介绍的都是从服务端建立好私钥、公钥,而后下发给客户端,也是能够实现的
2. 我这里将私钥、公钥的生成交给客户端生成
3. 我认为客户端本身负责生成私钥、公钥,再将公钥交给管理员上传(或编辑),利于控制和管理

检测、安装 sshd

ps -ef |grep sshd
通常安装过程最后会提示安装那些组件,若是忘记了选择 openssh-server
只好在这里从新安装一次

sudo apt-get install openssh-server

服务端 sshd 配置修改

1. 修改 sshd_config
sudo vim /etc/ssh/sshd_config 修改如下 4 处

# by wzh 20190114 yes--no
StrictModes no

# by wzh 20190114
PubkeyAuthentication yes

# by wzh 20190114
AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2

# by wzh 20190114 yes ---no ,can not use password to SSH
PasswordAuthentication  no
** 这一处最好等测试密钥方式正确以后,再单独修改!

2. 创建公钥key 保存文件
sudo mkdir .ssh
cd .ssh
sudo touch authorized_keys
sudo vim authorized_keys 
加入 pubkey

3. 重启 SSHD
sudo systemctl restart sshd

一、从 linux ssh 到 linux

1. 在 191 客户端 上创建密钥对
	ssh-keygen
	简单起见,一路回车!passphrase 也是空着!

2. 确认公钥私钥文件是否生成
	ls
	authorized_keys  id_rsa  id_rsa.pub
	
3. 上传 191 本身的公钥到 192
	ssh-copy-id -i ~/.ssh/id_rsa.pub  dhbm@192.168.1.192
	或者直接在当前目录
	ssh-copy-id -i id_rsa.pub  dhbm@192.168.1.192
	
	返回结果以下:
		/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
		The authenticity of host '192.168.1.192 (192.168.1.192)' can't be established.
		ECDSA key fingerprint is SHA256:7CHsZoFn6YJ7RInEerqfKmKc0dw/TGpRK0Tca8piTCI.
		Are you sure you want to continue connecting (yes/no)? 

4. 测试一下
	ssh dhbm@192.168.1.192
	由于以前是密码方式,第一次可能还会要求输入密码
	Ok

5. 删除测试
	在 192 服务器上 cd .ssh ,rm authorized_keys
	这是我本身测试,只有一个用户,能够简单删除 authorized_keys 文件
	若是多人操做,只能打开 authorized_keys 文件,删除对应的记录
	authorized_keys wen jian文件内容以下图:

$ ll
	total 24
	drwx------  2 dhbm dhbm 4096 Jan 11 17:15 ./
	drwxr-xr-x 15 dhbm dhbm 4096 Jan 11 17:15 ../
	-rw-------  1 dhbm dhbm  401 Jan 11 17:15 authorized_keys
...
再次 测试 191 ssh 到 192
	ssh dhbm@192.168.1.192
	dhbm@192.168.1.192's password: 
** 回到了以前的密码方式
** 等确认一段时间以后,再来去掉密码方式登陆

6. 重复以上 ssh-copy-id 再来!此次就不要再删除了!

二、从 Mac 客户端到 192 服务器

1. 和以上 Linux 操做同样的次序,在 Mac 上创建密钥对
ssh-keygen 
返回结果:
	...
	Your identification has been saved in /Users/dhbm/.ssh/id_rsa.
	Your public key has been saved in /Users/dhbm/.ssh/id_rsa.pub.

1. 上传 Mac 的公钥到 192 服务器
	ssh-copy-id -i ~/.ssh/id_rsa.pub  dhbm@192.168.1.192

3. ssh 测试
	ssh dhbm@192.168.1.192

三、从 Mac 到 192 上的 Docker (非 22 端口)

1. 按照网上搜索到的方法(直接 cd .ssh 目录下操做)
ssh-copy-id -i id_rsa.pub  "-p 10033 root@192.168.1.192"
返回错误:
	/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname
	-f: force mode -- copy keys without trying to check if they are already installed
	-n: dry run    -- no keys are actually copied
	-h|-?: print this help

2. 去掉引号
ssh-copy-id -i ~/.ssh/id_rsa.pub  -p 10033 root@192.168.1.192
ok!

四、从 Windows putty 到 192 服务器

1. 下载 putty 和 putty gen
	下载地址不少,我是从 CSDN 下载的
	https://download.csdn.net/download/baolang00/10529977

2. 首先打开 putty gen生成 公钥私钥
	** 生成的时候很是慢,头几回不知道技巧的时候,每次都等待了将近 40 分钟!
	** 技巧: 看到进度条,没事就在下面的空白处点鼠标!点鼠标!!点鼠标!

3. 保存私钥、key 和 公钥
	1)、保存私钥 : 必须
	2)、复制保存key:必须
	3)、保存: 非必须

4. 将以上 key 内容发送给管理员,上传(直接编辑粘贴)到服务器
	** 客户端保存以后文件夹内容以下

** 服务端加上公钥以后以下

5. 开始 putty SSH 链接
	1)、设置登陆帐号

2)、加载本身的私钥

3)、保存本次会话(Session)

** 能够在测试成功以后,从新操做一次的时候保存
** 后续操做就能够直接加载(load)

4)、成功的话,就以下图,直接进入了服务器

5. 错误处理:老是看到 server refused our key

修改 192 服务端 sshd 配置(vim /etc/ssh/sshd_config)
	** 以前都是 linux 之间操做,因此,都是严格模式 (StrictModes )
	
	1)、#StrictModes yes 去掉注释,改为 StrictModes no
	2)、#PubkeyAuthentication yes 去掉注释,改为 PubkeyAuthentication yes
	3)、#AuthorizedKeysFile .ssh/authorized_keys 改为 AuthorizedKeysFile .ssh/authorized_keys
	4)、保存退出,重启 sshd