SSH
检查 SSH 客户端
如果使用专门的 SSH 客户端可跳过该步。
检查一下本机(要远程连接别人的机器)有没有安装 SSH 客户端,终端中输入 ssh
查看输出,如果提示未找到命令则需要手动安装 OpenSSH。
以 Ubuntu 等 Debian 系发行版为例:
sudo apt install openssh-client
开启 SSHD 服务
有些系统的 sshd 服务默认开启,如云服务器,可跳过该步。
在将要被远程的系统的终端中输入 ssh 127.0.0.1
,提示请输入 yes/no/[fingerprint] 的话可以 Ctrl + c
停止;提示不能连接的,请先安装并开启 ssh 服务器。sshd 就是 ssh 的服务器端。
还是以 Ubuntu 等 Debian 系发行版为例:
sudo apt install openssh-server
然后开启 sshd 服务,并设置自启动。
sudo systemctl start sshd #启动服务
sudo systemctl enable sshd #设置自启动
Debian 系给 sshd 的 service 起名叫 ssh,不知怎么想得,不过 sshd 也还能用。
SSH登录命令
直接输入
ssh 登陆命令的一般格式为 ssh user@HostName
,如:
ssh root@0.0.0.0
如果需要指定端口就增加-p <port>
,不指定端口使用默认的22端口,如:
ssh -p 8022 root@0.0.0.0
配置文件
每次输入太长也不好记,可以自己设置一个别名,别名配置保存在 ~/.ssh/config
中。
~
是指当前用户的主目录。Unix-like 上即~
或$HOME
所指;Windows 上为%USERPROFILE%
所指,在地址栏输入%USERPROFILE%
即可进入。
下面是一个例子,注释是 Github Copilot 提示的,我看是对的,说明有人写过,哈哈:
Host demo # 主机别名,可以自定义
HostName 0.0.0.0 # 服务器地址
Port 8022 # 端口号,可以不写,默认22
User root # 登录用户名,可以不写,默认当前用户
写好保存之后就可以直接使用 ssh demo
登录了,和使用 ssh -p 8022 root@0.0.0.0
效果是一样的。
SSH 免密登录
SSH认证方式有两种:
- 用户名密码认证
- 公钥私钥认证
上面什么都不做就登陆会使用第一种用户名密码认证,如果不配置密钥的话每次连接都要输入密码进行验证。下面说第二种方式。
生成本地公私钥
本地终端中执行
ssh-keygen
生成的密钥文件就放在了 ~/.ssh
目录中,图为 Windows 的样例。
添加到“已授权”文件中
将本地用户 ~/.ssh/id_rsa.pub
中的内容添加到被远程用户的 ~/.ssh/authorized_keys
文件中,这个本地用户以后就可以免密登录了。
可以使用 ssh-copy-id
,用法和 ssh 一样,只需把 ssh 换成 ssh-copy-id 即可。(Windows 上的 OpenSSH 好像没有?)
如:
ssh-copy-id user@HostName
也可以自己复制粘贴(没有已授权文件的话自己创建一下)。