SSH配置公钥登录
SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
在虚拟机创建linux或者在主机商购买云服务器都会需要用SSH进行远程登录。第一步往往都是先配置SSH的相关设置。
本篇主要介绍了如何禁用root和密码登录和使用公钥私钥登录,并记录一次我配置SSH的过程
密码口令登录
通过密码进行登录,主要流程为:
- 客户端连接上服务器之后,服务器把自己的公钥传给客户端
- 客户端输入服务器密码通过公钥加密之后传给服务器
- 服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录
公钥登录
公钥登录是为了解决每次登录服务器都要输入密码的问题,流行使用RSA加密方案,主要流程包含:
- 客户端生成RSA公钥和私钥
- 客户端将自己的公钥存放到服务器
- 客户端请求连接服务器,服务器将一个随机字符串发送给客户端
- 客户端根据自己的私钥加密这个随机字符串之后再发送给服务器
- 服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。
如果允许ROOT登录,很多IP段都会被弱口令扫描,尝试用ROOT的方式登录。由此可见关闭ROOT登录是必要的操作。
服务器默认ROOT登录,由于ROOT登录不安全性,需要关闭root登录。
登录到服务器
我使用的是openssh for windows
当然有其他的很多的ssh Client,openssh直接可以用CMD打开
别的客户端还有Putty Xshell等。
OpenSSH连接到服务器
使用指令ssh username@hostname
没有绑定域名的话主机商提供有IP地址可在控制面板查看,同时还有root账号和密码。首次登录一般都是root账户
ssh root@xxx.xxx.xxx.xxx
xxx换为主机商提供的IP地址
使用putty连接到服务器
在此处输入主机商提供的ip地址即可连接,稍后会提示输入username和password
创建新账户,使用新账户登录并关闭ROOT登录
首先新创建用户账户
useradd jhsy 创建用户
passwd jhsy 创建密码
分配sudo权限
添加用户到/etc/sudoers
此时需要用到VIM的相关操作
只需要知道HJKL四个键控制光标的上下左右
在需要输入的时候使用I键进入输入模式,输入完成后按ESC键退出输入模式
使用:符号进入命令模式
:w 保存
:q 退出
:q! 强制退出
:wq! 强制保存退出
有些系统默认没有vim需要安装vim或者使用vi替代vim
我比较习惯用vim,如没有vim 可自行安装vim
vim /etc/sudoers
——————————————————
#Allow root to run any commands anywhere
root ALL=(ALL) ALL
jhsy ALL=(ALL) ALL
添加新创建的账户到#Allow root to run any commands anywhere下方
如果出现//readonly option is set (add ! to override)错误,是因为
sudoer没有w权限
sudoers文件只有可读的权限,直接用:wq!强制保存。
测试sudo是否添加成功
su jhsy //切换到jhsy
sudo echo helloworld //sudo 输出 helloworld
sudoer添加成功,可以使用sudo
关闭ROOT登录SSH
编辑SSH配置文件,并将PermitRootLogin yes改为no
vim /etc/ssh/sshd_config
——————————————————
PermitRootLogin yes改为no
PermitRootLogin yes改为no
重启ssh服务
使用指令systemctl restart sshd.service重启ssh服务
systemctl restart sshd.service
测试root ssh登录
登录失败
可以看到Root已经无法登录服务器了。
创建并使用公钥登录
创建公钥和私钥
使用ssh-keygen生成公钥和私钥
ssh-keygen -t "加密方式" -C“描述”
例如
ssh-keygen -t rsa -C "jhsy"
-C参数可不加,直接用ssh-keygen -t rsa 即可。当然也可以选择其他的加密方式
这里我使用ssh-keygen -t rsa
默认创建位置都在个人目录下的.ssh/
Passphrases是私钥的密码,可以选择输入密码也可以留空,每次私钥登录都会要求输入密码。
当生成下面的小图片,也就是指纹之后就说明生成成功了。此时~/.ssh/目录下会生成两个文件,id_rsa和id_rsa.pub
安装公钥
ssh登录时会先检查公钥,公钥位置在~/.ssh/authorized_keys
此时我们发现.ssh下并没有authorized_keys
需要将公钥放入authorized_keys
使用cat或者mv都可以,这里我使用cat命令
cat idrsa.pub >> authorized_keys
更改权限
authorized_keys需要600
.ssh需要700
使用chmod命令
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
下载私钥到本地
将~/.ssh/id_rsa下载到本地
使用scp下载
在本地电脑上使用scp user@hostname:~/.ssh/id_rsa 本地目录
列如
scp user@hostname:~/.ssh/id_rsa ./Desktop/id_rsa
将私钥放在桌面
打开公钥登录
编辑/etc/ssh/sshd_config
vim /etc/ssh/sshd_config
PubkeyAuthentication no改为yes
暂时不要关闭密码登录,如果没有
:wq!保存
重启ssh服务
systemctl restart sshd.service
测试公钥登录
openssh登录
ssh -i 私钥位置 user@hostname
如果有私钥密码的话会提示输入私钥密码,没有密码则直接登录成功
我的id_rsa文件更改了名字,改为了auth,我设置了私钥密码,所以在登录时会要求输入密码。
putty登录
putty使用私钥登录需要转换为ppk
使用Putty key Generator工具转换
转换完毕之后点击Save private key保存私钥到本地
在此处将转换完成的ppk私钥放入putty并登录
关闭密码登录
更改/etc/ssh/sshd_config
sudo vim /etc/ssh/sshd_config
找到PasswordAuthentication 将yes改为no
:wq!保存配置
再次使用密码登录的时候服务器已经拒绝了。这样安全性就会大大提升。