SSH如何通过公钥连接云服务器-阿里云开发者社区

开发者社区> 玄学酱> 正文

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

简介:
+关注继续查看

通常我们连接远程服务器(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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
8667 0
SSH通过SSH代理连接到内网机器
要解决的问题? 需要解决的问题:https://q.cnblogs.com/q/105319/ 简单来说就是本地机器通过一台公网机器SSH到公网机器后面的私网机器。 网络环境如下图:本地机器可访问代理机器,代理机器可访问内网机器,本地机器和内网机器不互通 操作步骤: 1.实现本地机器到代理机器的SSH连接。
1234 0
求助:寻找一款采集数据类硬件,能够通过GPRS发送数据到现有服务器
我所开发的是工厂的MES系统,但是现在需求是要对一台原始冲压机床的工作次数进行计数,并把发工作次数到系统里   冲压机床是最原始的机器,没有任何可直接对接开发地方,只能考虑另外加装这么一款硬件实现计数和通讯。
2197 0
Auto Scaling 通过启动模板来使用伸缩服务
功能说明 AutoScaling伸缩组长期依赖的伸缩配置信息本质上就是Ecs实例配置,考虑到Ecs推出了持久化Ecs实例配置的启动模板,因此AutoScaling 将伸缩组与启动模板结合,用户可以通过直接在创建伸缩组时选择启动模板来使用弹性伸缩 伸缩组使用启动模板的默认版本与最新版本而非指定版本时.
3102 0
使用xshell-ssh连接服务器被经常意外中断(Disconnected from remote host)
最近使用Xshell使用服务器,经常连接上使用一会就会被自动中断,很是闹心,并且出现以下的错误提示: Socket error Event: 32 Error: 10053.
7878 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10501 0
root用户无法通过ssh连接Linux系统
ssh协议为了安全,有些版本默认禁止root用户的登陆 cd /etc/ssh 编辑sshd_config文件 cat sshd_config | grep PermitRootLogin PermitRootLogin yes 完成之后重启服务 systemctl restart sshd  & ...
1696 0
云上mNGS分析: 通过云服务60秒完成病毒序列比对
新型冠状病毒SARS-CoV-2 RNA在发病后数周内在上呼吸道或下呼吸道中检测到,用于泛病原体检测的基因组下一代测序(mNGS)为此次新冠病毒SARS-CoV-2 RNA 的早期发现和准确测序立下了汗马功劳。 阿里云基因计算服务AGS提供了针对mNGS宏基因组测序数据的快速比对能力,只需要一个阿里云的对象存储Bucket和AGS命令行工具,对一组肺泡采样测序的宏基因组数据3.2Gbase(22M reads),60秒内可以完成和已知的病原体基因组包括新型冠状病毒SARS-CoV-2和39种BetaCov RNA的参考序列的比对,并且支持自定义的病毒库的上传和比对。
815 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
12311 0
+关注
玄学酱
这个时候,玄酱是不是应该说点什么...
20710
文章
438
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载