SSH 密钥认证是什么?

与用户密码登录相比,SSH 密钥认证更安全,因为只有拥有密钥的人才能连接,并且密钥通过不同的算法进行了很好的加密。它还通过无密码登录使 SSH 连接变得简单。

这个搞两个方案,一个是自己需要登录到服务器,一个是开账号给别人登录到服务器

个人的方案

客户端生成密钥对

大多码农都是windows系统,这里就以windows来演示了。

在windows系统,按ctrl+r,直接输入cmd

然后在打开的命令行窗口中,直接进入.ssh目录

$ cd .ssh

运行命令生成密钥对(您可以使用现有密钥或生成新密钥对)

$ ssh-keygen

执行上述命令首先会让你输入生成密钥的文件名:我这里输入的 xjdemo_xiaojin,之后一路回车(也可以输入密码,来个双重保护)

在执行命令的当前目录下会生成一个xjdemo_xiaojin.pub、xjdemo_xiaojin 两个文件。

在服务器添加证书

方法一:将公钥复制到 Ubuntu 主机的最快方法是使用名为ssh-copy-id. 由于其简单性,强烈建议使用此方法(如果可用,比如有在用Git Bash的老铁们,就可以直接用这个linux的命令使服务器自动添加认证这个证书)

$ ssh-copy-id -i ~/xjdemo_xiaojin.pub root@172.25.1.230

方法二:如果您没有ssh-copy-id可用的,但您可以通过基于密码的 SSH 访问服务器上的帐户,您可以使用传统的 SSH 方法上传您的密钥。

我们可以通过使用cmd的type命令读取本地计算机上公共 SSH 密钥的内容并通过 SSH 连接将其传送到远程服务器来完成此操作。

$ C:\Users\EDY\.ssh>type xjdemo_xiaojin.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC90tsEOp9oL+iprQ3ig0y8pcpssR18zxCiD19YvkiL3Y3i9Rg6Kwh48wFy+rjhRbyxeMse2U12nGsLh4mEcEXp7uELXlzSwVKxmJ7JBvuiV/B90Cumf03EwALcsdODIY3z2CwLhc0EAd52xsILXsdFGZDoTcvwzlZ1SZC3SgmfFHnkh6QknWZSAt2pwIl/h2t4jG98X6EraEpmynKHQfbnPIFI7U5T3rNjbSp4WkAff39d8teGqCLk4k7KxC6ngFBIz/itGG/W4X2auW85KV7u/Ptp/BeP25zC2LLqvdZoEkJz0GOM50XLdekQV3lbeh4Zy47AuiwF6ooOhqENRYNmbTMw3HAGsLNxB1k3v0AReFSyUO7Zdzqc8jPns9OjAAQXoh2QGcKnuYjPbxNoJTsthlBwhapS/9pXAtLdgjIy+7orxF7aUC0Gg5jk6zqWfsoo54Eu93M26fTl6eRPRDLjm0Xit0JambN04k9QyIX9LiMGoSewNmw1wEj2HiSH/Ts= xiaojing@DESKTOP-9IGE82N

copy本地的秘钥,直接echo到authorized_keys文件,但要小心,是两个箭头的,这个是续传。如果少一个箭头的话,如把这个文件原有的数据覆盖掉,估计你得吃席了。

$ echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC90tsEOp9oL+iprQ3ig0y8pcpssR18zxCiD19YvkiL3Y3i9Rg6Kwh48wFy+rjhRbyxeMse2U12nGsLh4mEcEXp7uELXlzSwVKxmJ7JBvuiV/B90Cumf03EwALcsdODIY3z2CwLhc0EAd52xsILXsdFGZDoTcvwzlZ1SZC3SgmfFHnkh6QknWZSAt2pwIl/h2t4jG98X6EraEpmynKHQfbnPIFI7U5T3rNjbSp4WkAff39d8teGqCLk4k7KxC6ngFBIz/itGG/W4X2auW85KV7u/Ptp/BeP25zC2LLqvdZoEkJz0GOM50XLdekQV3lbeh4Zy47AuiwF6ooOhqENRYNmbTMw3HAGsLNxB1k3v0AReFSyUO7Zdzqc8jPns9OjAAQXoh2QGcKnuYjPbxNoJTsthlBwhapS/9pXAtLdgjIy+7orxF7aUC0Gg5jk6zqWfsoo54Eu93M26fTl6eRPRDLjm0Xit0JambN04k9QyIX9LiMGoSewNmw1wEj2HiSH/Ts= xiaojing@DESKTOP-9IGE82N' >> /home/xj/.ssh/authorized_keys

测试

现在就可以用xj_xiaojin文件来连接了

$ ssh -i xjdemo_xiaojin  xj@172.25.1.230

或者把 xj_xiaojin重命名为 xj_xiaojin.pem

$ ssh -i xj_xiaojin.pem  xj@172.25.1.230

更优化的做法,直接ssh就可以了,不需要密码

ssh xj@172.25.1.230

禁用密码连接

注意:要保证 .pem 连接成功的状态下,禁用密码连接

$ sudo vi /etc/ssh/sshd_config

找到这一行 #PasswordAuthentication yes

# Change to no to disable tunnelled clear text passwords
# PasswordAuthentication yes

取消前边的 # 注释,改为

PasswordAuthentication no

重启 ssh服务

$ sudo service ssh restart

好了,教程这到这里结束了

服务器方案

新增用户

root@xjTEST:~/.ssh# adduser king
Adding user `king' ...
Adding new group `king' (1001) ...
Adding new user `king' (1001) with group `king' ...
Creating home directory `/home/king' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for king
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
root@xjTEST:~/.ssh#

赋予root权限

$ chmod 700 /etc/sudoers
$ vi /etc/sudoers # User privilege specification
root ALL=(ALL:ALL) ALL
下边增加
king ALL=(ALL:ALL) ALL $ chmod 400 /etc/sudoers

生成密钥对

root@xjTEST:~/.ssh# cd /home/king/
root@xjTEST:/home/king# mkdir .ssh
root@xjTEST:/home/king# cd .ssh/ root@xjTEST:/home/king/.ssh# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): king_8.134.210.33.pem
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in king_8.134.210.33.pem
Your public key has been saved in king_8.134.210.33.pem.pub
The key fingerprint is:
SHA256:mAa0TRY+kECFCqU6nPfunpWeiRAStvIXnw3dqVz1iS8 root@xjTEST
The key's randomart image is:
+---[RSA 3072]----+
| o+++.+. |
|.....B |
|o+ o + . |
|= + . = . o o . |
|+= o. = S + . o |
|.oo o+ =.o . |
| ....oo+ E . |
| .o = o . |
| o* + |
+----[SHA256]-----+
root@xjTEST:/home/king/.ssh# ls
king_8.134.210.33.pem king_8.134.210.33.pem.pub

服务器认证证书

root@xjTEST:/home/king/.ssh# cat king_8.134.210.33.pem.pub >> authorized_keys

客户端登录

把私钥传到客户端,放到~/.ssh目录中

xiaojin@xiaojin-PC:~/.ssh$ ssh -i ~/.ssh/king_8.134.210.33.pem king@8.134.210.33

好了教程就到这里结束了。

ubuntu生成pem证书连接服务器(已验证)的更多相关文章

  1. Openssl生成根证书、服务器证书并签核证书

    1.修改Openssl配置文件CA目录: cat /etc/pki/tls/openssl.cnf dir = /etc/pki/CA 2.生成根证书及私钥: #http://www.haiyun.m ...

  2. Ubuntu下无法使用Secure_CRT连接服务器

    虚拟机使用 1 .指令安装了SSH服务器 sudo apt-get install openssh-server 2. 输入命令 ps | grep ssh 查看SSH服务是否开启 显示服务已开启 3 ...

  3. iOS 生成pem证书

    openssl pkcs12 -in Certificates.p12 -out Certificates.pem -nodes     需要通过终端命令将这些文件转换为PEM格式:openssl p ...

  4. B-彻底删除卸载Ubuntu中的MySQL并重新安装(已验证)

    Ubuntu-16.04,MySQL-5.7,寻找多篇有关如何彻底卸载删除MySQL的博文, 最终验证下面转发博文真实有效,推荐! https://www.jianshu.com/p/c76b31df ...

  5. iOS_生成pem推送证书(用于百度云推送)

    具体步骤如下: 首先,需要一个pem的证书,该证书需要与开发时签名用的一致. 具体生成pem证书方法如下: 1. 登录到 iPhone Developer Connection Portal(http ...

  6. nginx反向代理cas-server之2:生成证书,centOS下使用openssl生成CA证书(根证书、server证书、client证书)

    前些天搭好了cas系统,这几天一致再搞nginx和cas的反向代理,一直不成功,但是走http还是测试通过的,最终确定是ssl认证证书这一块的问题,原本我在cas服务端里的tomcat已经配置了证书, ...

  7. iOS推送证书生成pem文件(详细步骤)

    1.pem文件概述 pem文件是服务器向苹果服务器做推送时候需要的文件,主要是给php向苹果服务器验证时使用,下面介绍一下pem文件的生成. 2.生成pem文件步骤 1.打开钥匙串,选择需要生成的推送 ...

  8. 【加解密】使用CFSSL生成证书并使用gRPC验证证书

    写在前面的话 CFSSL是CloudFlare旗下的PKI/TLS工具.可以用于数字签名,签名验证和TLS证书捆绑的命令行工具和HTTP API服务器. 是使用golang语言开发的证书工具. 官方地 ...

  9. 关于JDBC技术中,调用MySQL中不建议在没有服务器身份验证的情况下建立SSL连接错误解决

    今天学习到了JBDC前沿:对JDBC编写步骤的封装,出现了一大串红色报错(当然,也不能叫报错,毕竟不是所有的红色都是错误eeror,) 错误如下: Establishing SSL connectio ...

随机推荐

  1. .Net+Vue3实现数据简易导入功能

    在开发的过程中,上传文件或者导入数据是一件很常见的事情,导入数据可以有两种方式: 前端上传文件到后台,后台读取文件内容,进行验证再进行存储 前端读取数据,进行数据验证,然后发送数据到后台进行存储 这两 ...

  2. OpenStack云计算平台部署(单节点)

    环境配置 虚拟机(centos7 .内存8G.硬盘300G.处理器4核并开启intel vt-x,网络模式设置为NAT,虚拟机网络一定要设置好,并可以ping通baidu,不然有中途掉IP的情况发生) ...

  3. re.sub()用法

    原文链接:https://blog.csdn.net/jackandsnow/article/details/103885422

  4. 采云端&采云链:从订单协同到采购供应链,让采购供应链互联互通

    采购供应链安全从来没有像现在这样显得如此重要和紧迫,也从来没有像现在这样复杂和敏感,对企业的经营产生决定性的影响.尤其在疫情期间,采购供应链更加牵一发而动全身,成为"运筹帷幄,决胜于千里之外 ...

  5. 坚守自主创新,璞华HawkEye IETM系统惠及国计民生

    可上九天揽月,可下五洋捉鳖,这是我们很多年的梦想.而要实现这样的梦想,不仅需要安全可靠的技术装备,还需要让这些技术装备处于良好的维保状态.于是,作为装备维保过程中必须的知识创作.管理.发布.浏览工具, ...

  6. 【Java UI】HarmonyOS添加日历事件

    ​参考资料 CalendarDataHelper Events Reminders api讲解 添加权限 在config.json添加权限代码如下 "reqPermissions" ...

  7. 在 Kubernetes 集群中使用 NodeLocal DNSCache

    转载自:https://www.qikqiak.com/post/use-nodelocal-dns-cache/ NodeLocal DNSCache 通过在集群节点上运行一个 DaemonSet ...

  8. Java容器化参数配置最佳实践

    Java是以VM为基础的,而云原生讲究的就是Native,天然的矛盾,虽然Quarkus是为GraalVM和HotSpot量身定制的K8s Native Java框架,生态原因切换成本太高,这种矛盾体 ...

  9. Linux服务器上MinIO生产部署的内核调优

    #!/bin/bash cat > sysctl.conf <<EOF # maximum number of open files/file descriptors fs.file ...

  10. 关于Elasticsearch使用java的说明

    从Elastic 7.0开始,我们可以不安装JAVA.安装包包含一个相匹配的JAVA版本在里面. Elasticsearch包含来自JDK维护者(GPLv2 + CE)的捆绑版OpenJDK. 要使用 ...