SSH如何通过公钥连接云服务器

本文涉及的产品
云服务器 ECS,u1 2核4GB 3个月
云服务器 ECS,u1 4核16GB 1个月
云服务器 ECS,u1 4核8GB 1个月
简介:

通常我们连接远程服务器(linux)windows下通过putty或xshell等工具远程连接。linux下可以直接通过ssh命令连接。

其实这两者都是一致的,都是通过ssh协议进行传输。

如果我们的windows没有安装putty等工具,但是有git-bash的话也可以直接通过ssh来连接。通过以下命令:

 
 
  1. ssh root@ip/主机名/域名/ 

接下来会叫你输入密码,成功输入后即可连接成功。

但是这样每一次都要输入面码,我们可以编写一个shell脚本,类似于:conn_vps.sh这样的文件

首先,打开git-bash(桌面上右击,选择Git Bash Here。) $ 为gitbash的命令提示符, # 为注释,非命令不必输入。下同

 
 
  1. $ cd ~ # 进入到用户家目录 
  2.  
  3. $ mkdir sh # 新建一个sh目录,用于存放shell脚本。 
  4.  
  5. $ cd sh # 以上都是我的个人习惯。不必和我一样  

然后新建该文件

 
 
  1. $ vim conn_vps.sh 

进入vim模式,按i键即可编辑,输入以下内容:

 
 
  1. #!/bin/bash # 这一行必须要写,非注释 
  2.  
  3. ssh root@ip/主机名/域名 # 输入你自己的远程主机ip等。  

此时按,ESC键,再按:wq保存退出。

现在即可运行该脚本:

 
 
  1. $ ./conn_vps.sh 
  2.  
  3. $ sh conn_vps.sh # 这两条命令,任意一条都可以运行  

当然如果你在本身就在linux环境下,需要赋予执行权限,像下面这样。和我一样在git-bash中创建的,不需要这一步,本身就有执行权限。

 
 
  1. $ chmod 755 conn_vps.sh 

然后再执行,然后你会发现依然会输入密码,这是当然的,我们刚才只不过是把刚才的命令简单的脚本了一下。

接下来SSH的密钥分发。

查看是否有密钥

 
 
  1. $ ll ~/.shh/ # 查看是否有id.rsa,和id.rsa.pub两个文件。 

如果没有的话,可以生成一个。有的话跳过这一步

 
 
  1. $ ssh-keygen -t rsa -C "jan.mail@foxmail.com" #这部其实可以不加邮箱参数,但是git配置github连接需要。 

#所以最好一次性做了,用一样的密钥。邮箱换成你自己的邮箱。

连续三次回车,如果不设置密码的话。

接下来,上传公钥到远程服务器

 
 
  1. $ ssh-copy-id -i ~/.ssh/id_rsa.pub root@远程服务器的ip/主机名/域名 

然后运行conn_vps.sh。第一次还是需要输入一遍密码,如果出现以下提示符即算成功。

 
 
  1. Now try logging into the machine, with"ssh 'root@你的ip'" 
  2.  
  3. and check to make sure that only the key(s) you wanted were added.  

这样就算成功了,在运行conn_vps.sh,即可连接上你的服务器。

如何你要多个云服务器。root密码可以弄得复杂些,然后通过这样的方式连接云服务器。

yeah!大功告成

嗯,既然我们可以登录上去了,那我们去看看远程机器上(linux)的情况

输入ll .ssh/

 
 
  1. [root@ten ~]# ll .ssh/ 
  2.  
  3. total 4 
  4.  
  5. -rw------- 1 root root 401 Sep 10 20:47 authorized_keys  

如果你的远程机器上没有生成ssh-keygen,就会只有一个文件,authorized_keys翻译过来就是认证的密钥。

而这个认证的密钥就是前面那条命令的的 ~/.ssh/id_rsa.pub 的内容。

所以这条命令 ssh-copy-id -i ~/.ssh/id_rsa.pub root@远程服务器的ip/主机名/域名就是把id_rsa.pub的内容粘贴到authorized_keys中。

如果另一台客户端也想连接到这台远程服务器。可以用同样的命令来一遍,也可以直接用cat查看id_rsa.pub,再在服务端用vim打开authorized_keys文件。

粘贴进去,之前的不要删除,换一行即可。

当然如果你不想用ssh-copy-id -i命令,那你就得记住authorized_keys这个单词~





作者:jianddd
来源:51CTO
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
消息中间件 安全 Unix
SSH配置多台服务器之间的免密登陆以及登陆别名
SSH配置多台服务器之间的免密登陆以及登陆别名
70 1
|
2月前
|
缓存 网络协议 数据可视化
WinSCP下载安装并实现远程SSH本地服务器上传文件
WinSCP下载安装并实现远程SSH本地服务器上传文件
106 1
|
2月前
|
Linux 网络安全 数据安全/隐私保护
SSH工具连接远程服务器或者本地Linux系统
SSH工具连接远程服务器或者本地Linux系统
69 0
|
17天前
|
网络协议 安全 Linux
在IntelliJ IDEA中使用固定公网地址远程SSH连接服务器环境进行开发
在IntelliJ IDEA中使用固定公网地址远程SSH连接服务器环境进行开发
22 2
|
1月前
|
Linux 网络安全
|
13天前
|
网络安全 数据安全/隐私保护
服务器密码登录出现了:SSH connection failed: connect ECONNREFUSEDxxxxxxxx:22 * Xshell提示 SSH connection fa
服务器密码登录出现了:SSH connection failed: connect ECONNREFUSEDxxxxxxxx:22 * Xshell提示 SSH connection fa
|
20天前
|
安全 Linux Shell
SSH服务器拒绝密码登录的解决方法
SSH服务器拒绝密码登录的解决方法
54 0
|
27天前
|
网络协议 网络安全 数据安全/隐私保护
如何在IDEA中使用固定公网地址SSH远程连接服务器开发环境(三)
在IDEA中通过固定公网地址SSH远程连接服务器开发环境,需要配置固定TCP端口以避免地址随机变化。首先,升级cpolar至专业版及以上,然后在官网保留一个固定TCP地址。进入cpolar管理界面,编辑隧道信息,将保留的固定地址填入,更新隧道。最后,在IDEA中新建SSH连接,输入固定地址和端口,验证连接。成功后,即可稳定远程开发。
|
27天前
|
网络协议 Java Linux
如何在IDEA中使用固定公网地址SSH远程连接服务器开发环境(二)
在IDEA中通过Cpolar实现固定公网地址SSH远程连接到Linux服务器开发环境,主要步骤包括:1) 在Linux服务器上安装Cpolar,使用一键脚本进行安装和启动服务;2) 登录Cpolar Web UI,创建隧道,指定隧道名称、协议、本地地址(SSH默认端口22)、临时随机TCP端口和中国地区;3) 使用生成的公网TCP地址在IDEA中新建SSH连接,输入该地址和端口,完成远程连接。这种方式允许开发者在任何地方通过固定的公网地址进行远程开发,而无需公网IP。
|
27天前
|
安全 网络协议 Linux
如何在IDEA中使用固定公网地址SSH远程连接服务器开发环境(一)
该文介绍了如何通过IDEA设置远程连接Linux服务器的步骤,使用Cpolar内网穿透工具实现在没有公网IP的情况下进行远程开发。主要内容包括检查Linux SSH服务、本地连接测试、在Linux上安装Cpolar、创建远程连接的公网地址、公网远程连接测试以及固定连接公网地址。文章还提供了相关截图辅助说明,适用于IDEA2023.2.5版本。