在用ubuntu开发时,我们经常是通过远程ssh连接来开发的。而对于有些在境外的开发人员来说,像向日葵这种软件的连接很不稳定,容易断开。这个时候,就需要我们在ubuntu上装tailscale供ssh连接了。
ubuntu安装tailscale
在很多教程里,在ubuntu里装tailscale都是用手动安装的命令,需要GPG密钥,例如
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.gpg | sudo apt-key add -
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.list | sudo tee /etc/apt/sources.list.d/tailscale.list
sudo apt-get update && sudo apt-get install tailscale
但是在实操的过程中,这个命令很容易遇到下载的密钥找不到,又要手动下载密钥或者去查询并验证密钥是否是对的,很麻烦;亦或者教程会推荐用curl直接一键用tailscale密钥安装:
curl -fsSL https://tailscale.com/install.sh | sh && sudo tailscale up --auth-key='密钥'
这类命令后续需要下载许多包,且也要安装GPG密钥。
其实很多时候,像这种软件下载,我们首先要做的不是在网上找教程,而是去官网里看看有没有一键下载的命令或者推荐的方式,可能是平时大家下载软件时总是要把默认路径从C盘改到其他盘,大家都不太相信官网的命令。但实际上,官网的命令是包含了要下载的所有东西的,我们只需要在ubbutu运行:
curl -fsSL https://tailscale.com/install.sh | sh
看到:
Created symlink /etc/systemd/system/multi-user.target.wants/tailscaled.service → /lib/systemd/system/tailscaled.service.
+ [ false = true ]
+ set +x
Installation complete! Log in to start using Tailscale by running:
sudo tailscale up
就说明下载成功了,接下来我们在官网注册一下tailscale账号,在设置里找到key,创建一个用于外部连接的密钥,然后在ubbutu运行:
sudo tailscale up --auth-key=密钥
没有输出是正常的,在linux系统里除了运行一些进程和下载更新包外,许多命令都是没有输出的。接下来我们运行:
tailscale ip
会看到返回两个网址,一个是IPV4,一个是IPV6,都能用来ssh连接。
到这一步先别急,很多人装好后,着急忙慌地就直接下载tailscale客户端尝试进行ssh连接了,但是还有很关键的一步:开启ubbutu的ssh连接,并检查防火墙是不是屏蔽了。
首先让我们检查一下ssh有没有安装:
sudo systemctl status ssh
如果显示inactive,not found或者不活动,就说明未安装或未启动。这个时候运行:
sudo apt update && sudo apt install openssh-server -y
sudo systemctl start ssh
sudo systemctl enable ssh # 设置开机启动
设置开机启动是为了防止以后出现类似的问题,毕竟一般用ubbutu开发的话,这台远程的服务器一般是不关机的
接着我们来检查防火墙:
sudo ufw status
显示inactive的话,就说明防火墙没启用,可以忽略;但如果显示active,就需要开放ssh端口:
sudo ufw allow ssh # 或 sudo ufw allow 22/tcp
然后输入命令来检查是否监听了ssh端口:
sudo ss -tlnp | grep :22
如果有类似显示:
sudo ss -tlnp | grep :22
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=20031,fd=3))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=20031,fd=4))
说明已经监听着了。接下来检查SSH设置里是否用默认值"PasswordAuthentication no"来阻止密码登录,这同样会使ssh登录失效。
运行一下命令,备份原始配置文件并添加配置:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
# 启用密码认证
sudo sed -i '/^# Authentication/a PasswordAuthentication yes' /etc/ssh/sshd_config
# 确保Root登录被安全地禁止
sudo sed -i '/^# Authentication/a PermitRootLogin prohibit-password' /etc/ssh/sshd_config
然后运行:
sudo grep -E "^PasswordAuthentication|^PermitRootLogin" /etc/ssh/sshd_config
如果看到:
PasswordAuthentication yes
PermitRootLogin prohibit-password
就说明配置成功了,可以进行tailscale远程ssh连接。
本地windows下载tailscale
我们在windows本地下载tailscale时,一般会遇到两种错误。
-
一是下载时,没有用管理员身份运行,此时在安装时会报错;
-
二是在下载过程中,碰到错误:
Some Windows system services required by Tailscale are currentlydisabled. Please re-enable the following services: iphlpsvc
它的意思是,本地的一个网络服务iphlpsvc被中断了, 此时需要我们用win+R输入services.msc ,找到IP Helper,把启动设置改为自动,点击确定后,再双击点开,点击服务状态下的启动(如果显示已停止)。然后继续安装就能成功了