Hexo历险记之八SSH远程链接服务器

前言

到现在为止,你已经学会了在本地编辑文档的所有技巧,那么你就可以尽情地表达你的想法了。

这篇文章,是为了教会你如何用SSH远程连接服务器。再生成密钥对,实现免密码登录。

时隔四年,重启Hexo历险计划!

Hexo历险记之八SSH远程链接服务器

SSH为Secure Shell的缩写,是为远程登录会话和其他网络服务提供安全性的协议。只要本机和远程服务器都有SSH服务,那么就可以使用SSH服务进行连接,实现文件复制和命令运行。

检查SSH

Linux

先检查一下远程服务器是否有ssh服务,一般来说是都有的,出现如图结果即为存在。那么你就可以直接跳过安装SSH,直接开始生成密钥对。

sudo ps -e |grep ssh
image-20220728210431295

Windows

:开启服务
net start sshd

Mac

sudo systemsetup -getremotelogin
image-20220728210921506

安装SSH

但是,倘若是新购买的服务器,或者是新拉取的Docker系统镜像中也是存在没有的可能性。

Linux

以CentOS系统为例,使用包管理器yum安装sshd服务。

# 更新包管理器
yum update -y

# 安装初始化脚本和网络工具
yum install -y initscripts  net-tools.x86_64

# 安装包括ssh在内的诸多小工具。
yum install -y openssh-server

Windows

设置->应用->可选功能->添加功能,选择OpenSSH服务器,点击下载即可。

img

Mac

Mac本身是安装了SSH服务,只是默认情况下是不会开机自启的。

: 启动sshd服务:
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist

: 停止sshd服务:
sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist

:打开开机自启服务
sudo systemsetup -setremotelogin on 

:关闭开机自启服务
sudo systemsetup -setremotelogin off

本地配置长时间连接

一般来说,SSH连接如果一段时间内没有信息交互,就会自动断开。

所以为了长时间保持ssh连接,可以修改/etc/ssh/ssh_config文件,要求60s内发送一个信息来保持连接。

ServerAliveInterval 30

ServerAliveCountMax 10
image-20210527234823807

生成密钥对

首先,在本地生成了密钥对,以123@123.com邮箱为例。

运行命令会询问你,是否要配置SSH密钥的密码,一般来说都是直接敲击两次回车,直接生成没有密码的密钥。没错,密钥也是可以设置密码的。但是我使用密钥的原因,就是为了省去输入密码的麻烦,自然不会再多此一举。

ssh-keygen -t rsa -C '123@123.com' -f ~/.ssh/github_id_rsa
  • -t:指定要创建的密钥类型为RSA
  • -C:添加注释,一般是用邮箱
  • -f:指定用来保存密钥的目录位置及文件名,~/.ssh/github_id_rsa
image-20220728213945677

可以用编辑器打开私钥文件github_id_rsa查看内容。一般私钥文件是保存到自己本地PC的,不要在网络上存储备份,也不要发给任何人,因为只有他能通过公钥校验的。

-----BEGIN OPENSSH PRIVATE KEY-----
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
n0I6NcH5GwQ30AAAALMTIzQDEyMy5jb20=
-----END OPENSSH PRIVATE KEY-----

可以用编辑器打开公钥文件github_id_rsa.pub查看内容。公钥文件一般就是放在服务器的指定位置,当本地PC通过SSH服务进行连接时会用公钥和私钥进行计算匹配,如果不匹配就只能用账号和密码登录了。

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCz2g8WxP4rSXSogMoMg+rmeniH6GG7EroodU4YtuwmZ5jZHXw+IrY4IXSulEHqCj/+j5nZ4nyzsgTFGT9zoYIR5ikpOSc0xM4qpEsCrQrkMVFR2BrFs+uRLqJ/IkF3URqk4vFkeoentdCwgd93fXookM+5PwQomCwHNl4TXaRzxPVYKO5D3HUlvzQJDzBtwMqRZlRPQEPUTcwKmp2g4qDHtvc889nE6JsBUZSLDdbNYJcmrKvmCiOxrV0GgSQtuPGOwhpP0QzsZM86t7lcsYF8kRNooFj4XEJU8gdgNLOBI+IbD8l1QkKPRVBxu5tPz9PicOoLm0/jR6xsvy2zu0sTfKWvhs/GKo7GhU0Uj820iNqVQMqEbTwZpH/WKDRCciGRJBym3gpw7sGGWW3KZTI9Yn4177xZRYqjqM1xqzLay2I7+VgOJuNWR1ZDq+EofJgGYykFWrBDQqBYkXT0EkRqQdNuhpAZ6vy+KcXY7RExaJbVIgDXm00cdlIh7iIkKIc= 123@123.com

服务器配置公钥

往远程服务器上面配置密钥总共有三种方式:

  1. 登录阿里云控制台,从网页导入SSH公钥证书
  2. 在本地PC使用ssh-copy-id命令来复制公钥到指定服务器的指定用户下
  3. 手动复制公钥内容到服务器

小白第一次玩服务器就用第一个方法吧,简单粗暴地配置root账户!就是会默认把密码登录禁用,只能使用秘钥登录。当然可以改为同时用密钥和密码登录。

第二个方法也简单,一个命令就能完成复制。而且弥补了第一个方法只能配置root账户的缺陷,老手就是用它配置其他自定义账户。中间会需要账户的密码进行一次校验,之后就不需要了。

第三个方法是最复杂的,需要手动修改文件,很高的危险性。一个不小心就彻底GG,只能用备份文件恢复或者重置系统。好处就是你能够明确地了解自己究竟干了什么。

三个方法各有优劣吧,一般来说就是第一和第二个方法实现配置公钥。第三个方法很少使用。

阿里云控制台导入证书

致敬官方文档。

在阿里云控制台导入证书的话,阿里云对root用户做的事是两步:

  • 将公钥信息追加到服务器的/root/.ssh/authorized_keys文件中;
  • 修改/etc/ssh/sshd_config文件中的PasswordAuthenticationno

这种方式会默认把密码登录禁用,只能使用秘钥登录。

ssh-copy-id

在本地PC使用ssh-copy-id命令,一条命令可以完成复制公钥。注意:中间需要输入账户密码。

: ssh-copy-id -i 公钥文件 账户名称@服务器的公网IP

ssh-copy-id -i ~/.ssh/github_id_rsa.pub root@39.96.12.167 
  • -i:指定私钥文件位置,例如我的就是~/.ssh/github_id_rsa.pub
  • 账户名称,指定的是管理员账户root
  • 我之前服务器是阿里云的,外网IP就是39.96.12.167
image-20210526233237963

手动复制公钥

SSH在尝试远程登录的时候,会去指定用户的根目录下寻找~/.ssh/authorized_keys文件,再依次读取文件中的每一行公钥跟本地PC的密钥进行匹配,如果匹配成功就建立连接。

既然如此,那么我们以给keen用户新增公钥来进行一次示例。

第一步,将本地的github_id_rsa.pub公钥信息追加到远程服务器的~/.ssh/authorized_keys文件,注意附加权限。

# 切换至自己创建的keen用户
su keen

# 创建 ~/.ssh 文件夹
mkdir ~/.ssh

# 创建 ~/.ssh/authorized_keys 文件
vim ~/.ssh/authorized_keys

# 按`i`进入编辑模式,用剪贴板把本地的公钥复制进去
# 按`ESC`退出编辑模式
# 输入英文的`:wq`写入文件并退出到命令行

#并赋予相应的权限
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

第二步,修改服务器SSH配置文件,如果觉得用vim比较不习惯可以用scp复制到本地,用界面化的应用(类似VS Code)编辑后再重新复制回去,注意保存备份!

# 编辑配置文件
vim /etc/ssh/sshd_config

# 将服务器文件复制到本地电脑
scp root@39.96.12.167:/etc/ssh/sshd_config /Users/keen/Downloads

# 将本地文件复制到目标服务器
scp /Users/keen/Downloads/sshd_config  root@39.96.12.167:/etc/ssh/

配置修改的内容如下,重点是一定要打开RSA认证,允许公钥验证,至于是否允许密码登录看个人喜好了。其他的配置都是锦上添花,不配置也无妨的。

# RSA验证
RSAAuthentication yes

# 公钥校验
PubkeyAuthentication yes

# 指定公钥文件
AuthorizedKeysFile .ssh/authorized_keys

# 允许密码登录
PasswordAuthentication yes

# 保持长时间的链接
ClientAliveInterval 60
ClientAliveCountMax 3

# 最大允许链接数,默认10
MaxSessions 1000

# 最大允许保持多少个未认证链接(未输入登录密码),默认值是10
MaxStartups 10

第三步,重启sshd服务,让配置生效。

systemctl restart sshd.service

成功效果

如果不需要输入密码出现这个画面,证明成功。

ssh root@server_ip
image-20210526233237964

本地配置多个私钥

如果你跟我一样是有多个服务器需要同时配置SSH密钥免密码登录,那么你就可以看看这个配置。

再生成一个 Gitlab 用的密钥对,其中 gitlab_id_rsa 为密钥的文件名,~/.ssh/gitlab_id_rsa 为密钥目录位置。

ssh-keygen -t rsa -C '123@123.com' -f ~/.ssh/gitlab_id_rsa

新建配置文件~/.ssh/config,来指定哪个服务器使用哪个密钥。

touch ~/.ssh/config

其中文件内容如下。

# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa

# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id_rsa

# 如果生成多个 SSH-Key , 则按上面的格式继续往下写
  • Host:服务器的域名或者IP
  • HostName:服务器的域名或者IP
  • IdentityFile 指定私钥的路径,在生成 SSH-Key 时,我们已经指定该路径,拷贝过来即可

注意:需要给配置文件指定权限!

Mac系统直接使用命令即可指定配置文件的权限。

sudo chmod 600 ~/.ssh/id_rsa

Windows系统,在id_rsa文件上右击,选择路径为属性-安全-高级,点击窗口左下角的禁用继承,然后删除权限条目里除自己以外的人。

断开SSH

在本地终端断开ssh连接而不关闭终端窗口的方法有两个。

  • 法1:快捷键Ctrl+D

  • 法2:输入命令logout

重新连接

如果在重置了远程服务器后,由于.ssh/known_hosts中的信息不匹配,会出现如下警告。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:Vg0673orrEkccGdVfQzK8viE/V+rv9DxceMgIBaIdik.
Please contact your system administrator.
Add correct host key in /c/Users/Administrator/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /c/Users/Administrator/.ssh/known_hosts:6

解决方案有两个,你可以运行命令选择性删除,也可以直接删除known_hosts文件。

ssh-keygen -R 39.96.12.167
  • -R:从 known_hosts 文件中删除所有属于 39.96.12.167 的密钥信息。

感谢

感谢现在的坚韧,为了能成为更好的自己。

感谢过去好奇的我,给现在的我留下来这么大的工作量!

Linux下使用vim命令编辑与修改文本内容

一次性把 Hexo 博客部署到自己的服务器

远程连接到Linux操作系统实例

linux 中chmod命令使用的详细解释

SSH 远程登录错误解决办法 WARNING: REMOTE

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351

推荐阅读更多精彩内容