首页 > 其他分享 >SSH配置公钥登录

SSH配置公钥登录

时间:2022-10-20 18:13:20浏览次数:46  
标签:公钥 私钥 登录 密码 SSH 服务器 ssh

SSH配置公钥登录

     

SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

在虚拟机创建linux或者在主机商购买云服务器都会需要用SSH进行远程登录。第一步往往都是先配置SSH的相关设置。

本篇主要介绍了如何禁用root和密码登录和使用公钥私钥登录,并记录一次我配置SSH的过程

密码口令登录

  通过密码进行登录,主要流程为:

  1. 客户端连接上服务器之后,服务器把自己的公钥传给客户端
  2. 客户端输入服务器密码通过公钥加密之后传给服务器
  3. 服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录

公钥登录

  公钥登录是为了解决每次登录服务器都要输入密码的问题,流行使用RSA加密方案,主要流程包含:

  1. 客户端生成RSA公钥和私钥
  2. 客户端将自己的公钥存放到服务器
  3. 客户端请求连接服务器,服务器将一个随机字符串发送给客户端
  4. 客户端根据自己的私钥加密这个随机字符串之后再发送给服务器
  5. 服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。

如果允许ROOT登录,很多IP段都会被弱口令扫描,尝试用ROOT的方式登录。由此可见关闭ROOT登录是必要的操作。

服务器默认ROOT登录,由于ROOT登录不安全性,需要关闭root登录。

登录到服务器

我使用的是openssh for windows

当然有其他的很多的ssh Client,openssh直接可以用CMD打开

别的客户端还有Putty Xshell等。

OpenSSH连接到服务器

使用指令ssh username@hostname

没有绑定域名的话主机商提供有IP地址可在控制面板查看,同时还有root账号和密码。首次登录一般都是root账户

ssh [email protected]

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!保存配置

再次使用密码登录的时候服务器已经拒绝了。这样安全性就会大大提升。

标签:公钥,私钥,登录,密码,SSH,服务器,ssh
From: https://www.cnblogs.com/xiondun/p/16810780.html

相关文章

  • npm登录失败
    简介使用npm时,由于网络原因我们一般会使用淘宝镜像源https://registry.npm.taobao.org/,但是使用淘宝镜像源会使我们登录失败.解决问题使用如下命令即可npmsetr......
  • CentOS 8 添加SSH远程登录端口并禁用22端口
    本次新加端口为:502020X01备注:本段操作是在防火墙开启的状态下进行一:修改SSH配置文件,目录为:vim/etc/ssh/sshd_config:1.按i进入编辑状态,按上下键找到“#Port22”这......
  • os,json模块实现用户登录注册
    用户登录注册功能importosimportjson#注册功能#1.获取执行文件所在的目录路径base_dir=os.path.dirname(__file__)#D:/pythonProject03/day19#2.拼接......
  • SSH版本信息可被获取漏洞解决方法
    SSH版本信息可被获取漏洞解决方法详细描述SSH服务允许远程攻击者获得ssh的具体信息,如版本号等等。这可能为攻击者发动进一步攻击提供帮助。解决办法 NSFOCUS建议您采取以......
  • 传奇单机版登录界面黑屏不显示账号密码怎么办?
    近来仍有不少同学问起GOM引擎登陆器游戏后黑屏的原因,其实这个问题也没那么难,最大的原因是因为补丁问题,将补丁分成了几类,总之补丁不能放在该去的地方!以下是传奇单机版登录界......
  • day01-3-界面显示&用户登录&餐桌状态显示
    满汉楼01-34.功能实现024.2菜单界面显示4.2.1功能说明显示主菜单、二级菜单和退出系统功能4.2.2代码实现先搭建界面显示的大体框架,具体的功能后面再实现创建MHLVi......
  • 微信授权登录:移动端[unionid](一)
    如果你有多端登录统一用户,或者是同一产品下不同子产品之间统一用户的需求的话,请提前在微信开放平台打通微信网页授权并绑定,不然的话后期打通用户处理起来比较麻烦。因为同一......
  • 极光手机号码一键登录(二、集成 客户端&服务端)
      Android建议采用mavenCentral自动集成方式;iOS采用cocopods自动集成的方式 文档地址:https://docs.jiguang.cn/jverification/guideline/intro......
  • (Linux服务器)git添加SSH公钥后本地验证失败
    环境:腾讯云Ubuntux86_64问题说明:在配置了公钥后,一直提示我[email protected]:Permissiondenied(publickey).解决办法:先查看root/.ssh目录下的文件再在该目录下执行......
  • vscode 通过ssh远程连接多台服务器?
    目录需求操作需求想要把在linux终端操作的习惯改到本机上来。理由如下:linux下的vim对于编程调试不是很方便;编程与命令不能很好链接,经常要多开几个window或sessions;vi......