详解如何SSH远程登录自己的Linux服务器
本文最后更新于 2024年11月2日 凌晨
现在,更多的网站使用Nginx充当Web服务器并部署为LEMP环境。
即使是Java Web项目,通常也会使用Nginx进行端口反向代理,而Nginx的兼容和稳定性,Linux远远好于Windows Server。
另外一方面,Linux配合软件包管理器(yum、apt等),可以十分方便地安装好基本软件,现在还有Docker容器工具,如果是功能性模块,用Docker即可。
还有一些公认的原因:
- 开源,可以轻松查看用于创建Linux内核的可用代码,还可以修改代码以修复任何错误或定制话需求后自行编译等;
- 稳定性很好,系统不容易崩溃或者卡死(Windows的稳定性,这几年……);
- 安全性能好;且系统性问题少。
- 操作方便,对计算机专业人士来讲,几条Shell命令就可以执行很多的操作,比Windows Server的图形化控制好很多。
虽然Linux没有图形化界面、大部分新用户没有使用过,但是……我还是极度推荐服务器使用Linux。
那么,小白用户,买了服务器后,如何远程连接自己的Linux服务器呢?
紧急推荐
紧急、限时推荐【强烈推荐】:
2C 4G 8M基本可以满足当下个人需求(如:网站、MC服务器等)。
4C 8G 10M基本是个人服务器配置的顶峰。
上面两个服务器,选择Debian或CentOS系统,是练手Linux的绝佳设备嗷。
视频教程
和以前一样,我们觉得有用、有必要录个视频的内容,我们还是会花时间做个视频:
感觉有用,可以给视频投个币么?( ´▽`):视频原链接:https://www.bilibili.com/video/BV1cL411w7RB
另外,接受打赏和捐赠嗷:爱发电:Mintimate
远程登录
本次的分享不为别的,就是讲解Linux服务器的入门使用:远程登录服务器:
- 推荐使用SSH(OpenSSH)进行远程登录,安全性高,且更加方便。
- 不推荐使用telnet进行远程登录,所以本次就教大家用SSH多种方法登录。
这次文章就教大家使用SSH“开启”服务器的大门。
本次教程,远程服务器主要有两个方面:
- 密钥登录:使用SSL(OpenSSH和OpenSSL)生成的私钥和公钥进行配对登录(免密)。
- 账号登录:使用用户密码进行登录。
客户端推荐
因为要使用SSH远程连接服务器,需要端对端的加密通信,进而需要SSL函数、SSH的客户端支持。
推荐的SSH客户端:
- Windows【自带工具】:Win10可以使用Powershell,Win11可以使用Windows Terminal,这两个都是自带的工具。
- Linux&macOS【自带工具】:Linux和macOS,使用自带的Terminal即可。
- Android【非自带】:推荐使用termius
- iOS【非自带】:推荐使用termius、ServerCat
SSH
Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议。可在不安全的网络中为网络服务提供安全的传输环境(基于SSL实现)。
SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。
我们平时使用的SSH,一般是OpenSSH,基于OpenSSL实现。
Windwos10、macOS、Linux均采用OpenSS和OpenSSH方案。
Opt1:账号登录
首先我们介绍一下账号登录,账号登录的好处:
- 相当于账号和密码登录,账号登录更方便于多平台和多用户使用同一个账号登录。
我们新买的服务器,一般都是有安装OpenSSH和OpenSSL的,其中OpenSSH依赖于OpenSSL。所以,只需要设置用户名对应的密码后,客户端(本地电脑)就可以连接了。
设置密码
如果你是云服务器,在还没有登录前,需要先重置一次密码。比如:腾讯云服务器控制台内:
用云服务器厂商提供的接口重置自己服务器密码后,服务器密码后会自动重启,这样密码就设置好了。
如果你是局域网内Linux(比如:树莓派、VMware内Linux虚拟机等);
那么就不需要设置密码了,密码就是你平时登录的账号密码,但是注意查看是否有安装OpenSSL和OpenSSH:
1 |
|
没有安装,可以用户软件包管理器安装。
PS: 如果你使用腾讯云lighthouse,可以用用lighthouse户去设置(重置)密码,也很简单,在控制台内选择:
这个时候,我们会登录腾讯云默认用户:lighthouse
,在此界面使用su命令切换到root用户(也可以切换到其他用户):
1 |
|
之后,我们可以使用passwd
命令,重置用户密码:
密码会自动隐藏哦,盲输后回车即可。
允许远程登录
之后,我们需要允许服务器的SSH(OpenSSH)远程登录。
需要注意,如果你是使用腾讯云的控制台,进行重置密码
,那么重置后,腾讯云会帮你配置好SSH(OpenSSH)远程登录,无需进行本次操作。
编辑文件/etc/ssh/sshd_config
:
1 |
|
之后,添加PasswordAuthentication=yes
。保存并退出即可。
如果你并不知道Vim的操作,建议参考文章终端文本编辑神器–Vim命令详解。如何配置Vim以及Vim插件?
最后,重启OpenSSH,使其生效:
1 |
|
到此,SSH账号登录的服务器端,服务器(被连接端)配置完成。接下来,我们就可以使用客户端连接了。
连接Linux
现在,我们就可以本地连接服务器。假设:
- 我的Linux服务器IP是:
192.168.3.241
- 我的服务器是Debian/CentOS
- 需要远程登录的账号为
root
那么我的SSH连接命令就是:
1 |
|
出现Are you sure you want to continue connecting (yes/no/[fingerprint])?
后,输入yes
并回车,这个时候输入刚刚设置的密码即可连接:
注意:输入密码时,密码自动隐藏,盲输后回车即可。
到此 ,我们的服务器就连接成功了:
Opt2:密钥登录
接下来,我们介绍如何使用密钥进行登录,这也是我喜欢的远程登录方式,主要原因:
- 安全性高:相对于密码的长度和复杂度,
私钥长度默认为2048位,与公钥进行匹配,安全性极高
。 - 方便:使用密钥登录,私钥和公钥自动匹配,无需输入密码即可登录。(GitHub、Gitee等的免密Git,也是使用密钥进行验证)
为实现密钥登录,我们只需要客户端生成私钥和公钥后,将公钥放置到服务器上,在使用SSH连接时,会自动进行匹配验证,并完成登录。
客户端生成密钥
macOS和Linux通常自带OpenSSH和OpenSSL(Windows在Win10以后,也自带OpenSSH和OpenSSL)
所以我们直接使用Terminal进行密钥生成:
1 |
|
其中,youremail@domain.com
为你的电子邮箱,不需要制定邮箱可以简化为:
1 |
|
其中:
Enter file in which to save the key
:密钥存放地址,默认为当前用户目录下的.ssh文件夹下。Enter passphrase
:保护私钥的密码,一般留空,直接和上面一样回车即可。Enter same passphrase again
:确认私钥密码(不解释了……)
生成后,进入用户名文件夹即可看到我们生成的密钥:
其中:
id_rsa
:生成的私钥,保留在电脑即可。id_rsa.pub
:生成的公钥,打开后,复制内容,后文部署到服务器上。
服务端部署公钥
现在,我们就可以部署公钥到服务器了,服务器一般都可以直接部署公钥,和GitHub、Gitee一样;
比如:腾讯云控制台的一键部署:
之后,到控制台上部署即可:
当然,通用方法是先客户端登录服务器:
之后,进入.ssh
文件夹内(如果没有就使用mkdir命令创建),并使用vim创建并编辑authorized_keys
文件:
1 |
|
之后粘贴公钥即可:
到此,保存并退出即可:
到此,SSH密钥登录的服务器端,配置完成。接下来,我们就可以使用客户端连接了。
authorized_keys
内,可以添加多个客户端的公钥,一行一个,或者换行隔开即可。
客户端远程连接
和刚刚一样,我们使用ssh
命令就可以连接,假设我的服务器IP是:192.168.3.241
,我的服务器是Debian/CentOS,默认用户为root:
1 |
|
但是这个时候就可以看到,不用输入密码了:
Q&A
当然,这是一篇入门教程,新手总是会碰到一些问题。这里就解答一下常见的问题:
- REMOTE HOST IDENTIFICATION HAS CHANGED!
- Ubuntu等允许Root远程登录
- Permission denied (publickey).
- 设置了authorized_keys,还是无法密钥登录?
REMOTE HOST IDENTIFICATION HAS CHANGED!
出现:
1 |
|
一般出现这个错误,发生在你服务器重置后。主要是服务器的解析值不一样了,我们需要删除旧的(OpenSSH)解析值,需要删除的地址,上面已经写了:
打开上述文件,删除旧记录值:
删除后,即可重新连接:
Ubuntu等允许Root远程登录
如果你选择的是腾讯云Ubuntu系统:
默认,你只能使用ubuntu
这个用户进行登录;但,如果你想直接使用root用户进行远程登录,也不是不可以。
编辑/etc/ssh/sshd_config
这个文件,在文末添加:
1 |
|
之后,保存并重启ssh服务:
1 |
|
之后,就可以使用root用户进行登录了。
Permission denied (publickey).
如果SSH远程连接的时候,出现Permission denied (publickey).
错误:
其实看字面意思就可以理解了:权限不允许(公钥);意思就是,你电脑的私钥对应的公钥,并不在服务器的。两个解决方法:
- 服务器上,在用户
authorized_keys
文件内,添加设备的公钥,具体操作可以看上文。 - 服务器上,在
/etc/ssh/sshd_config
内,添加PasswordAuthentication=yes
,具体操作也可以看上文。
设置了authorized_keys,还是无法密钥登录?
设置了authorized_keys,还是无法密钥登录?这个可以依次排查:
- OpenSSH的配置文件(
/etc/ssh/sshd_config
)内,是否有允许密钥登录。 - 服务器上,用户文件夹(“家”目录)下的.ssh文件夹和authorized_keys权限是否正确,所属用户是否正确。
1 |
|
END
到此,Linux远程连接就是这些嗷。总的来说,方法很多,不过这篇文章,足够各位入门了吧。嘿嘿,大家不要忘记点赞和收藏、分享嗷。
另外,不建议使用Linux桌面环境,如果有Linux桌面需求,需要在腾讯云服务器上安装Linux桌面环境,参考: