使用 SSH-Key 登录远程服务器

使用 SSH-Key 登录远程服务器,第1张

ssh 提供两种级别的安全认证:

需要知道用户名和密码即可登录,该连接是加密的,但客户端不能确认目标主机是否为“伪造的”,也不能保证口令安全。

远程主机的 /etc/ssh/sshd_config 需配置:

重启 sshd 使改动生效:

需要用户持有“公钥/私钥对”,远程服务器持有公钥,本地持有私钥。

客户端向服务器发出请求。服务器收到请求之后,先在用户的主目录下找到该用户的公钥,然后对比用户发送过来的公钥。如果一致,服务器用公钥加密“质询”并发送给客户端。客户端收到“质询”后用私钥解密,再发还给服务器。认证结束。

生成 ssh-key,选加密算法(rsa、dsa),给秘钥命名(可选):

passphrase 是证书口令,以加强安全性,避免证书被恶意复制。

会在 ~.ssh 下生成 id_rsa , id_rsa.pub 两个文件,分别是 私钥/公钥。

公钥需保存到远程服务器 ~/.ssh/authorized_keys 里,私钥由客户端本地留存。

要保证 .ssh 和 authorized_keys 都只有用户自己有写权限。否则验证无效。

简单情况下,通过手动指定私钥文件登录

觉得麻烦可以配置客户端的 /etc/ssh/ssh_config

你也可以使用 SSH Agent,下面以使用 GitHub 为场景简单介绍。

创建 ~/.ssh/config

配置完成后,在连接非默认账号的仓库时,远端地址要修改为

SSH 是 Linux 下进行远程连接的基本工具。

一般情况下我们可以通过 ssh username@xxx.xxx.xxx.xxx 登录远程服务器,如果要管理多台服务器,这样太长了。

可以在家目录的 .ssh 中新建config文件,设置别名。

比如我有一台个人的云主机。IP是120.163.163.163,端口是4722(一般都是22,这里为了安全我改为了其他),登录用户名是ubuntu,登录方式是证书登录。

这样执行 ssh cloud 或 ssh alias 就无密码登录云主机了

ssh cloud "df -h"

ssh cloud "df -hps"

比如 sudo 开头的可能需要用户输入密码,需要 TTY。

添加 -t 参数后,ssh 会保持登录状态,直到你退出需要交互的命令。

再举个实际例子:

ssh -t flux sudo -u fueladminprd ssh 192.168.1.100

这句话实际执行了两步:

可以用单引号或双引号开头,然后写上几行命令,最后再用相同的引号来结束。

> 开头的就是输入下一行命令

如果需要在命令中使用引号,可以混合使用单双引号。

在远程服务器执行 ls node ,本地定义变量a,传入到命令中。达到一样的效果。

在下图的命令中为 bash 指定了 -c 参数

本地创建demo.sh,内容是: ls node

运行 ssh cloud <demo.sh

通过重定向 stdin,本地的脚本 demo.sh 在远程服务器上被执行。

修改 demo.sh 内容为:

执行 ssh cloud 'bash -s'<demo.sh aa bb cc

bash 就是 $0 第一个参数。

http://www.openssh.com/

https://www.cnblogs.com/sparkdev/p/6842805.html

https://www.zcfy.cc/article/top-20-openssh-server-best-security-practices


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/416676.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-24
下一篇2023-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存