wsl2 ssh启用root登录脚本

#!/bin/bash
# 运行方式
# vim setup_ssh_wsl.sh
# chmod +x setup_ssh_wsl.sh
# sudo ./setup_ssh_wsl.sh

# 检查是否以root用户运行
if [ "$EUID" -ne 0 ]; then
  echo "请使用root权限运行此脚本。"
  exit
fi

# 安装 OpenSSH 服务器(如果未安装)
if ! command -v sshd &> /dev/null; then
  echo "安装 OpenSSH 服务器..."
  apt update
  apt install -y openssh-server
fi

# 设置 SSH 配置
SSH_CONFIG="/etc/ssh/sshd_config"
echo "配置 SSH 设置..."

# 设置SSH端口,监听地址
SSH_PORT=22                 # 自定义端口号
LISTEN_ADDRESS="0.0.0.0"      # 监听所有地址,可以根据需求修改为特定地址

# 修改 SSH 配置文件以允许root登录、设置端口和监听地址
sed -i "s/^#\?Port .*/Port $SSH_PORT/" $SSH_CONFIG
sed -i "s/^#\?PermitRootLogin .*/PermitRootLogin yes/" $SSH_CONFIG
sed -i "s/^#\?ListenAddress .*/ListenAddress $LISTEN_ADDRESS/" $SSH_CONFIG

# 启用密码身份验证
sed -i "s/^#\?PasswordAuthentication .*/PasswordAuthentication yes/" $SSH_CONFIG

# 设置root密码
echo "请输入新的root密码:"
passwd root

# 创建启动脚本文件 /etc/init_wsl_ssh.sh 并写入启动命令
INIT_SCRIPT="/etc/init_wsl_ssh.sh"
echo "创建启动脚本 $INIT_SCRIPT ..."
echo -e "#!/bin/bash\nservice ssh start" > $INIT_SCRIPT

# 给予执行权限
chmod +x $INIT_SCRIPT

# 配置 /etc/wsl.conf 文件以自动执行启动脚本
WSL_CONF="/etc/wsl.conf"
echo "配置 $WSL_CONF 以在启动时自动运行 SSH 服务..."
if [ ! -f "$WSL_CONF" ]; then
  echo -e "[boot]\ncommand=\"$INIT_SCRIPT\"" > $WSL_CONF
else
  sed -i "/^\[boot\]/,/^command=/d" "$WSL_CONF"
  echo -e "[boot]\ncommand=\"$INIT_SCRIPT\"" >> $WSL_CONF
fi

# 生成主机密钥
echo "生成主机密钥..."
sudo ssh-keygen -A

# 启动或重启 SSH 服务
echo "启动或重启 SSH 服务..."
service ssh --full-restart

echo "SSH 配置完成。"
echo "端口:$SSH_PORT"
echo "监听地址:$LISTEN_ADDRESS"
echo "请确保防火墙已开放该端口。"
echo "WSL 2 启动时将自动启动 SSH 服务。"

posted @ 2024-11-11 00:31  上掌  阅读(219)  评论(0)    收藏  举报