目录
步骤2: 将/etc/ssh/sshd_config文件内容添加一行 PermitRootLogin yes
从上一篇的内容看,我是启用了code-server地端口,将其映射到ngrok内网穿透上,实现了方便地白嫖算力资源,那么如果想利用这台机器直接进行ssh连接岂不是更方便,于是本文将介绍如何进行ssh连接,方便使用vscode以及各种shell进行连接
由于我的ngrok账户只允许一个端口转发连接,所以以开始就要直接进行22端口转发服务
我们在kaggle打开终端依次进行这几个步骤(没有耐心直接跳转最后一节)
步骤1: 设置root用户密码(密码连接)
echo 'root:🍎your passwword🍎' | sudo chpasswd
步骤2: 将/etc/ssh/sshd_config文件内容添加一行 PermitRootLogin yes
echo 'PermitRootLogin yes' | sudo tee -a /etc/ssh/sshd_config
允许root用户通过SSH登录。
步骤3: 重启ssh服务
service ssh restart
步骤4: 修改LD_LIBRARY_PATH环境变量
实现过程中一直遇到OpenSSL version mismatch. Built against 30000020, you have 30200000
检查发现是系统路径出现错误,原先的LD_LIBRARY_PATH为:
/usr/local/cuda/lib64:/usr/local/cuda/lib:/usr/local/lib/x86_64-linux-gnu:/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/opt/conda/lib
LD_LIBRARY_PATH
中包含了指向/opt/conda/lib
的路径,这导致ssh
和sshd
等程序优先加载了这个目录下的OpenSSL库(libcrypto.so.3
),而这个版本的库与系统期望使用的版本不匹配。
我们修改LD_LIBRARY_PATH,
export LD_LIBRARY_PATH=$(echo $LD_LIBRARY_PATH | tr ':' '\n' | grep -v '/opt/conda/lib' | paste -sd ':')
这条命令会从LD_LIBRARY_PATH
环境变量中移除所有包含/opt/conda/lib
的条目。
步骤5: 安装pyngrok并配置ngrok
首先安装pyngrok:
pip install pyngrok
然后配置ngrok的authtoken:
ngrok authtoken 🍎ngrok的authtoken🍎
最后,使用ngrok将本地的22端口(SSH)暴露到公网:
ngrok tcp 22
一个notebook脚本直接运行
# 导入必要的Python库
import os
import subprocess
# 步骤1: 设置root用户密码
password = "🍎your passwword🍎"
command = f"echo 'root:{password}' | chpasswd"
result = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if result.returncode == 0:
print("Root密码设置成功")
else:
print("设置root密码失败:", result.stderr.decode())
# 步骤2: 修改/etc/ssh/sshd_config以允许root登录
sshd_config_addition = "PermitRootLogin yes\n"
with open("/etc/ssh/sshd_config", "a") as sshd_config:
sshd_config.write(sshd_config_addition)
print("已添加PermitRootLogin yes到sshd_config")
# 步骤3: 重启SSH服务
result = subprocess.run(["service", "ssh", "restart"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if result.returncode == 0:
print("SSH服务重启成功")
else:
print("SSH服务重启失败:", result.stderr.decode())
# 步骤4: 修改LD_LIBRARY_PATH环境变量
os.environ["LD_LIBRARY_PATH"] = ':'.join(filter(lambda x: '/opt/conda/lib' not in x, os.getenv("LD_LIBRARY_PATH", "").split(':')))
print("LD_LIBRARY_PATH已更新")
# 步骤5: 安装pyngrok并配置ngrok
!pip install pyngrok
!ngrok authtoken 🍎ngrok的authtoken🍎
!ngrok tcp 22
还有一个问题,最后您需要在bashrc中重新引入conda链接,不然环境cuda不可用:
export LD_LIBRARY_PATH=/opt/conda/lib