概述
首先我们需要先了解一下ssh的连接原理。
ssh大概就是,你的本地计算机生成了一对密钥,一个叫做私钥,一个叫做公钥。然后你把你的公钥上传到远端服务器其中一个user下的.ssh文件夹中。
每次ssh连接时,服务器就会看自己的公钥和你计算机的私钥能不能对的上,对的上就可以连接。
而刚创立AWS的ec-2后,他会给你一个默认的用户,以及你下载的这个默认用户的私钥,一个.pem文件。我们的整体流程如下:
使用下载的私钥ssh到ec-2的默认用户。
在ec-2上创建一个新的账户,拥有管理员和ssh权限。
在本地生成一组ssh密钥对,将公钥上传到新建用户的.ssh文件夹下
成功连接
第零步,部署ec-2
具体教程应该有很多,至于部署哪个系统,多大内存之类的,就看各位需求了。
第一步,使用默认账号连接ssh
在部署ec-2的时候,aws会让你选择一个密钥或者重新创建。如果没有创建过就可以创建一个,选择pem文件,他会让你下载一个.pem文件, 这个文件一定要保存好。
随后呢,到本地的命令行,打开bash,输入下面的命令。
$ ssh -i </path/to/default-privatekey.pem> ec2-user@<ec2-xx-xx-xx-xx.compute-1.amazonaws.com>
AWS也良心的给了教程:
如果显示这个,则说明登陆成功!
出了任何的bug的话,欢迎contact我或者写在评论区!
现在我们是用ec-2的默认用户登录的,但是我们需要创建自己的用户以及自己的ssh密钥
第二步 创建拥有管理员权限的用户
首先确保你成功登陆了ec-2 在远端执行
# 填入你的名字和用户名,并设置密码。(如果显示密码过于简单的话再输入一遍就可以了,它不会和你过不去)
$ sudo useradd -r -m -c "<My Full Name>" <usernameHere>
$ sudo passwd <usernameHere>
然后就是将你的用户添加到管理员列表里
# 填入你的名字和用户名,并设置密码。(如果显示密码过于简单的话再输入一遍就可以了,它不会和你过不去)
$ sudo useradd -r -m -c "<My Full Name>" <usernameHere>
$ sudo passwd <usernameHere>
# 随后打开visudo
$ sudo visudo
打开文件后往下翻,到这个位置:
在root下面添加你的用户名:
然后输入esc :wq保存并退出
# 然后是用su命令切换到你的用户名
$ su <username here>
# 切换到你的home 目录
$ cd
# 创建 .ssh 配置目录并且修改权限
$ mkdir .ssh
$ chmod 700 .ssh
ok, 目前位置我们的管理员用户就创建完成了,现在不要关闭这个terminal。在本地打开一个新的终端,我们要创建自己的密匙对了。
第三步 创建本地密匙对,上传公钥
# **本地!**终端运行
$ ssh-keygen
生成本地的密匙对,现在在你本地用户目录的.ssh文件夹下应该有两个文件:
这个id_rsa就是私钥,而.pub就是公钥
现在,回到远程终端!
到远程终端用户目录
# 创建authorized_keys并且设置权限
$ touch .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
# 编辑authorized_keys文件夹
$ vim .ssh/authorized_keys
然后,复制你本地的.pub也就是公钥,到这个文件上。然后:wq保存并退出
然后在本地打开一个新的端口,看你是否可以链接到远程服务器:
$ ssh <username here>@<ec2-xx-xx-xx-xx.amazonaws.com>
大功告成!