#!/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 服务。"