启用ssh服务

安装ssh

sudo apt-get install openssh-server

启用ssh

sudo systemctl enable ssh && sudo systemctl start ssh

查看ssh服务状态

sudo systemctl status ssh

生成密匙对并在服务器中保存

本地安装ssh客户端

sudo apt install openssh-client

本地生成ssh密匙对

mkdir -p ~/.ssh && cd ~/.ssh
ssh-keygen -t rsa
ssh-keygen -t ed25519 -f techlayman_ed25519 -C "root@techlayman.com"

SSH -keygen命令允许通过RSA、ECDSA和ED25519算法生成SSH密钥对。RSA得到了广泛的使用和最好的支持,而ED25519提供了更好的安全性和良好的性能。

在代码中,你可以用你喜欢的加密算法替换“ed25519”。" -f techlayman"指定键名,“-C “root@techlayman.com” ” 是可选的。

设置密匙

cd ~/.ssh && ls -la

发现有id-rsa和id-rsa.pub两个文件,其中 id-rsa为私钥, id-rsa.pub 则为公钥。

cat id_rsa.pub >> techlayman_keys
chmod 600 techlayman_keys
chmod 700 ~/.ssh

将公匙传到服务器

ssh-copy-id -i techlayman_keys root@techlayman.com -p 22

windows中没有ssh-copy-id命令方便地添加公钥到远程主机,需手动添加。

修改主机sshd_config配置文件

 nano /etc/ssh/sshd_config
 #是否允许管理员直接登录,'yes'表示允许
 PermitRootLogin yes 
 #是否允许支持基于口令的认证
 PasswordAuthentication no
 #是否允许任何的密码认证
 ChallengeResponseAuthentication no
 PubkeyAuthentication yes
 AuthorizedKeysFile      .ssh/authorized_keys
 UsePAM yes

重启主机ssh服务

service sshd restart

多个主机免密登录设置

找到私钥文件在本地机上的存储路径,运行以下命令修改私钥文件的属性。

chmod 400 ~/.ssh/ecs.pem

运行以下命令,进入用户主目录下的.ssh目录,并创建config文件。

cd ~/.ssh
vim config

在config配置文件内,按i进入编辑模式,添加如下配置项。

# 输入ECS实例的别名,用户SSH远程连接。
Host ecs1
# 输入ECS实例的公网IP地址。
HostName 121.196.**.**
# 输入端口号,默认为22。
Port 22
# 输入登录账号。
User root
# 输入.pem私钥文件在本机的地址。
IdentityFile ~/.ssh/ecs.pem

# 输入ECS实例的别名,用户SSH远程连接。
Host ecs2
# 输入ECS实例的公网IP地址。
HostName 121.196.**.**
# 输入端口号,默认为22。
Port 22
# 输入登录账号。
User root
# 输入.pem私钥文件在本机的地址。
IdentityFile ~/.ssh/ecs.pem

重启SSH服务,命令行连接实例

#重启SSH服务
service sshd restart
#行命令连接至实例
ssh ecs