linux- 云服务器重装系统后如何恢复远程连接
发现之前的centOS8系统取消了对一些重要配件的镜像源支持,遂决定改操作系统为Ubuntu 20.04
更改系统后就要面临一些调整,为了防止以后再次海搜特此记录。
更新ssh密钥
更改系统以后,云服务器主机的指纹也会跟着改变,而本地主机这时候存放的还是上一个系统的指纹,这时候连接就会提出验证警告,甚至直接禁止连接,看你使用的是什么远程连接工具,我的情况是vscode连接先前的host直接失败退出,但是Xshell仅弹出警告,无视后仍旧能正常连接,不知道为什么。
首先要找到云服务器主机当前的key并把它加入本地主机的.ssh/config中,方法是在本地主机终端输入
ssh user@you_server_ip
输入后就会提醒你指纹改了:
@ 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:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Please contact your system administrator.
Add correct host key in C:\\Users\\hw/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in C:\\Users\\hw/.ssh/known_hosts:2
Host key verification failed.
从输出中知道了新的指纹,将其加入本地主机C:\\Users\\hw/.ssh/known_hosts
文件里替换掉旧指纹, 然后再连接尝试vscode远程连接成功。
重建vscode的自动连接
我已经习惯用vscode来远程连接了,但是重置以后每次连接都要输入密码,明显不方便,好在微软也提供了自动登录的教程。
云服务器通过验证客户机的.ssh/id_rsa.pub文件内容是否对应来连接,我已经在自己电脑上有了一个.ssh/id_rsa.pub
文件, 直接导入给服务器即可:
$USER_AT_HOST="root@xxxxxxxxx"
$PUBKEYPATH="$HOME\.ssh\id_rsa.pub"
$pubKey=(Get-Content "$PUBKEYPATH" | Out-String); ssh "$USER_AT_HOST" "mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo '${pubKey}' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
上述指令将把id_rsa.pub
的内容保存在服务器主机的~/.ssh/authorized_keys
里。
此外教程建议用户出于安全考虑多建一个密钥送给服务器,虽然看着麻烦,但我也弄了,毕竟有安全感吗hh。
之前的自动登录上述流程都很顺利,但这次不知为何自动登录就失效了,尝试把客户机和服务器的分享的密钥都换成新的,以及看不知道哪个网络教程把服务器的 /etc/ssh/sshd_config
文件加上
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
然后重启sshd服务。
service sshd restart
上述都没用。
隔了一天后才发现问题,我把开发机和服务器.ssh
文件夹下的文件全部删了, 然后按照教程再次让开发机生成了个公钥给服务器的authorer_key
, 应该是 IdentityFile
的问题, 当时我有多弄一个id_rsa-remote-ssh.pub
的公钥给服务器,换系统的时候只更新了 id_rsa.pub
忘了更新 id_rsa-remote-ssh.pub
, 结果导致一直要密码验证,把 IdentityFile
一行删掉就行了。
出于安全感的考虑没想到坑了自己。。。。
安装vscode相关扩展和C++开发配件
vscode: C++ intellisense, code runner
C/C++:
sudo apt-get install build-essential gdb
配置宝塔面板
系统一重装,之前的宝塔面板扩展也跟着没了,这里有一个坑人点要注意就是一定要去宝塔官网找安装指令,别去csdn随便找一个安装指令去下,否则莫名其妙的错误搞得你找不着北。
下载完后就用新的面板地址的,用户名和密码了,记得确保服务器有放行8888端口
Congratulations! Installed successfully!
==================================================================
外网面板地址: http://xxx.xxx.xxx.xxx:8888/xxxxxxxx
内网面板地址: http://xxx.xxx.xxx.xxx:8888/xxxxxxxx
username: xxxxxxxx
password: xxxxxxxx
If you cannot access the panel,
release the following panel port [8888] in the security group
若无法访问面板,请检查防火墙/安全组是否有放行面板[8888]端口