小白又来啦,之前倒腾了一番用,总算用ssh连接上阿里云的服务器了,但是用了一段时间,不知道怎么的又让我输入密码了,于是重新再来弄,却发现自己都忘记了,于是乎,这次一定要记录下来,方便自动。
之所以不记得,其实是因为当时弄的时候也是稀里糊涂的,现在要明明白白记一下。
总体步骤
ssh原理太详细的讲解就不多说了,可以自行搜索出来很多文章。总结一下就是:
- 先要有一套密钥(一个公钥一个私钥)
- 然后在服务器存放公钥,在客户端存放私钥
- 那么,在客户端就可以用
ssh 用户名@IP地址
的命令登录服务器,不需要输入密码
具体操作:
1. 生成一套密钥(可以在服务器生成也可以在客户端生成)
- 方法一:如果是linux系统:用
ssh-keygen
命令生成一套密钥
-t 用来指定密钥类型(dsa | ecdsa | ed25519 | rsa | rsa1)
-p 指定passphrase,用来指定密码短语
-C 用来添加注释
举个例子:
ssh-keygen -t rsa -C "mykey"
执行命令后,会问你想要将生成的密钥对存放到哪里,如果什么都不输入直接回车,则默认保存在 ~/.ssh 目录下,会多了两个文件 id_rsa.pub 和 id_rsa, 其中带后缀.pub的是公钥,另一个是私钥
-
方法二:在阿里云ESC实例自动创建
这是我在连接阿里云的时候遇到的问题,所以这里还会介绍一下阿里云的操作
在云服务器的控制台,左侧菜单里的 "网络与安全" -> "密钥对"
点击确定后就会有弹框,下载好私钥。(那公钥在哪里呢?公钥在阿里那儿呢,好像我也找不到直接查看的方法,不过如果你本来就是想通过ssh连阿里云,那到这一步,暂时不用管公钥在哪儿啦)
2. 在服务器存放公钥,在客户端存放私钥
公钥需要写入到服务器的 ~/.ssh/authorized_key文件中,私钥需要存放到客户端的 ~/.ssh 目录下
- 方法一:在服务器端,把公钥写进~/.ssh/authorized_key文件中
//将文件写入authorized_keys中
cat id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
-
方法二:通过阿里云控制台放入实例
这样子,就导入公钥了,如果上一步是用方法二的话,那么本身就已经存在了,就不需要通过上面这2张图了。
但是!但是到这里还不够的,因为我们还没有绑定我们的ESC实例,所以,我们还需要这样:
确定之后,还有!记得,一定要重启实例,才会生效,重启完后,公钥就到了我们实例的~/.ssh/authorized_key文件中了
3. 现在可以用ssh去连接啦
PS:
如果还是不行的话,注意留一下实例的22端口是否放行了