SSH 远程登录服务器跑实验(含内网穿透)

最近需要远程在实验室的服务器跑实验,看了一些文档,一番折腾后给大家分享一下配置。
服务器的操作系统是 Ubuntu,CentOS 可以对应的替换下命令,操作一致。

安装(服务器)

sudo apt-get update sudo apt-get install openssh-server 

创建密钥(主机)

cd ~/.ssh ssh-keygen -t rsa -f id-rsa-ubuntu 

将公钥复制到服务器(主机)

ssh-copy-id -i id-rsa-ubuntu.pub 用户名@服务器地址 

修改config内容(主机)

这一部分是为了简化登录流程。

touch ~/.ssh/config vim ~/.ssh/config 

config 参数:

  • Host: 别名,可以直接用于 ssh 登录
  • Hostname: ip 地址
  • Port: SSH 端口号(如果做了内网穿透,则需要填写对应的端口号)
    • 比如:下图对应的是 10387image-20230320202439764
  • User: 登录的用户名
  • PreferredAuthentications: 指定客户端的认证方法为公钥
  • IdentityFile: 当前指的是私钥路径

P.S: 具体的参数信息可以通过 man ssh_config 查看

下面是配置文件样例:

  Host Ubuntu HostName x.x.x.x  User xx  PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_ubuntu  Host x.x.x.x User xx PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_ubuntu  Host x.x.x.x PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_ubuntu  Host Ubuntu-Nat-DDNS  HostName x.x.x.x  Port xx  User xx  PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_ubuntu 

如果 Host 指定了别名,则可以直接使用 ssh Host 登录,这是推荐的方式,非常的优雅。

比如 ssh Ubuntu-Nat-DDNS 直接登录到远程服务器,或者使用 ssh -L8888:localhost:8888 Ubuntu-Nat-DDNS,在登录服务器的同时将本地的8888号端口映射到服务器,从而开始快乐的跑 Jupyter。

编辑完之后,使用 esc 进入命令模式,用 :wq 保存并退出。

设置命令别名简化操作(主机)

打一大串命令还是有点麻烦,可以设置命令别名来简化它,因为我需要远程在服务器上跑 jupyter notebook,所以我设置的命令别名为:Ubuntu-Jupyter-Notebook-NATDDNS,你可以自定义你的命令别名

alias 指定一个命令别名执行 = 后面的操作,请同样自定义你的命令,然后使用 echo alias 命令别名="命令" >> 配置文件 来加入配置。

我的需求是远程连接到服务器后跑 jupyter notebook,并且查看 Tensorboard,所以需要映射主机的 88886006 端口到远程的 88886006 号端口上,当前服务器设置的 HostUbuntu-Nat-DDNS (~/.ssh/config 中的设置)。

那么对应的命令就是 ssh -L8888:localhost:8888 -L6006:localhost:6006 Ubuntu-Nat-DDNS

下面给出 bashzsh 别名的设置样例。

使用下面的命令将命令别名添加到配置文件中,对应的命令需要自定义。

echo alias Ubuntu-Jupyter-Notebook-NATDDNS="ssh -L8888:localhost:8888 -L6006:localhost:6006 Ubuntu-NAT-DDNS" >> ~/.bashrc source ~/.bashrc 
echo alias Ubuntu-Jupyter-Notebook-NATDDNS="ssh -L8888:localhost:8888 -L6006:localhost:6006 Ubuntu-NAT-DDNS" >> ~/.zshrc source ~/.zshrc 

现在,你可以在命令行中直接运行 Ubuntu-Jupyter-Notebook-NATDDNS 来进行连接,同时,本地的 88886006 号端口将会被映射。

安装(服务器)

curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash 

使用 cpolar version 查看是否安装成功

cpolar authtoken xxxxxxx 

开机自启动(服务器)

执行下列命令让其开机自动进行内网穿透,这样在远程服务器不慎重启时,本机依然可以连接。

sudo systemctl enable cpolar  sudo systemctl start cpolar  sudo systemctl status cpolar  

显示 active 表示成功。

查看公网地址和端口号(服务器/主机)

现在有两种方法可以看到你内网穿透后的状态:

对应到 ~/.ssh/config 文件中: HostName 3.tcp.vip.cpolar.cnPort 10387
你现在可以跳转回上面继续进行 ~/.ssh/config 的配置。

突然连不上(主机)

你需要重新访问 https://dashboard.cpolar.com/status 查看端口号。

因为免费是这样的 😃,你的端口号被重新分配了,没有什么大不了的,把这个网址收藏一下就行,一般来说几天才会重新分配一次,当然,也有可能是 ip 被重新分配了,但这个频率较低。

然后修改 config 中的 Port 项或者 HostName 项。

总是修改也有些麻烦,将打开 ssh config 修改的操作也进行简化:

echo alias sshconfig="vim +/Port ~/.ssh/config" >> ~/.bashrc source ~/.bashrc 
echo alias sshconfig="vim +/Port ~/.ssh/config" >> ~/.zshrc source ~/.zshrc 

现在,你可以使用 sshconfig 直接进行编辑,+/Port 命令会让你直接跳转到 Port 对应的行,此时使用 shift + a 即可直接编辑,如果你有多个 Port,那么用 n 跳转到对应的行即可。

编辑完之后,使用 esc 进入命令模式,用 :wq 保存并退出。

升级套餐,固定域名和端口的套餐是专业版 149/年。

安装 screen

现在有一个问题,就是主机在断网的时候,实验会终止。

有一个解决方法是 screen,而且其实你只需要 screen

sudo apt-get update sudo apt-get install screen 

执行命令

screen 命令 

其他命令

对于我来说,我只需要远程服务器不间断的跑 jupyter notebook,如果你和我一样,那么你只需要知道下面的操作:

因为担心实验室不小心断电,所以设置一下通电自启。

我的主板是微星,所以这里仅给出微星的示例(其他的主板大同小异,可以在网上自行查找):

参考链接:

原文链接:https://blog.csdn.net/weixin_42426841/article/details/129684565?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168449620216800182123704%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=168449620216800182123704&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-2-129684565-null-null.blog_rank_default&utm_term=NAS%E3%80%81%E7%BE%A4%E6%99%96%E3%80%81%E9%98%BF%E9%87%8C%E4%BA%91%E3%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E3%80%81%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E3%80%81ipv6%E3%80%81ddns%E3%80%81%E8%BD%BB%E9%87%8F%E7%BA%A7%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%81%E9%93%81%E5%A8%81%E9%A9%AC%E3%80%81%E5%A8%81%E8%81%94%E9%80%9A%E3%80%81DSM%E3%80%81DSM6.0%E3%80%81%E7%BE%A4%E6%99%96nas%E3%80%81%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%81%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85%E3%80%81%E9%BB%91%E7%BE%A4%E6%99%96%E3%80%81docker%E3%80%81%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F%E3%80%81%E5%9F%9F%E5%90%8D%E6%B3%A8%E5%86%8C%E3%80%81%E5%AE%9D%E5%A1%94%E3%80%81%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E3%80%81nginx%E3%80%81frp%E3%80%81%E5%8A%A8%E6%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享