首页 » PHP教程 » php验证ssh私钥技巧_若安在 Linux 上设置 SSH 密钥身份验证

php验证ssh私钥技巧_若安在 Linux 上设置 SSH 密钥身份验证

访客 2024-11-06 0

扫一扫用手机浏览

文章目录 [+]

密码身份验证在很多情形下是不足安全的。
密码可能会被预测、被破解,乃至在传输过程中被中间人攻击威胁。
而密钥身份验证通过利用公钥和私钥的组合,大大增加了安全性。
私钥存储在用户本地,而公钥则被放置在远程做事器上。
这种组合使得攻击者纵然截获了公钥,也难以逆向推导出私钥,从而供应了更加安全的身份验证手段。

天生 SSH 密钥对

首先,确保你的 Linux 系统上安装了 OpenSSH 工具。
大多数 Linux 发行版都默认安装了这个工具,但如果你的系统没有安装,你可以利用包管理器来安装它。

php验证ssh私钥技巧_若安在 Linux 上设置 SSH 密钥身份验证

在 Debian/Ubuntu 上利用 apt 安装 OpenSSH:

sudo apt updatesudo apt install openssh-client openssh-server在 Red Hat/CentOS 上利用 yum 安装 OpenSSH:

sudo yum install openssh-clients openssh-server利用 ssh-keygen 天生密钥对

一旦安装了 OpenSSH,你就可以利用 ssh-keygen 命令天生 SSH 密钥对。
这个命令的基本用法如下:

php验证ssh私钥技巧_若安在 Linux 上设置 SSH 密钥身份验证
(图片来自网络侵删)

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"-t rsa 指定密钥类型为 RSA。
-b 4096 指定密钥长度为 4096 比特,提高安全性。
-C "your_email@example.com" 添加注释,一样平常用你的邮箱地址。

天生密钥对后,你可以选择将其存储在默认位置(~/.ssh/ 目录下)或选择其他位置。

天生的密钥对包括两个文件:私钥文件(id_rsa)和公钥文件(id_rsa.pub)。
私钥文件存储在本地,而公钥文件则须要被复制到远程做事器上。

私钥是敏感信息,必须妥善保存。
公钥则是用于身份验证的公开信息。

密钥的存储和管理

默认情形下,天生的 SSH 密钥对会存储在用户的 ~/.ssh/ 目录下。
这个目录包含了两个紧张文件:id_rsa(私钥)和 id_rsa.pub(公钥)。
这种设置是为了方便用户在利用 SSH 时能够轻松找到和管理密钥。

然而,有时出于安全或组织的考虑,你可能想要将密钥存储在其他位置。
这可以通过在天生密钥对时指定存储路径来实现。
例如:

ssh-keygen -t rsa -b 4096 -f /path/to/your/keys/my_key -C "your_email@example.com"

这样会将私钥存储为 /path/to/your/keys/my_key,公钥存储为 /path/to/your/keys/my_key.pub。

SSH 密钥代理是一个可以管理 SSH 私钥的程序,可以在一次登录后将私钥的解密密码缓存起来,以便后续的 SSH 操作无需再次输入密码。

启动 SSH 代理:

eval "$(ssh-agent -s)"添加私钥到代理:

ssh-add ~/.ssh/id_rsa

这样,你就不须要每次 SSH 登录都输入私钥密码了,提高了利用的便利性和安全性。

在实际利用中,你可能会有多个密钥对,用于不同的做事器或用场。
为了更好地管理这些密钥对,可以利用 SSH 配置文件或密钥文件的别名。

配置 SSH 做事器登录到目标做事器

在你能够利用 SSH 密钥身份验证登录到目标做事器之前,确保目标做事器上已经启用了 SSH 做事。
在大多数 Linux 系统中,默认情形下,SSH 做事是启动的。

ssh username@your_server_ip

确保更换 username 为你的用户名,your_server_ip 为目标做事器的 IP 地址。
这将考试测验利用默认的密码身份验证登录。

手动安装公钥

手动安装公钥是一种基本的方法,它涉及将你的公钥内容添加到目标做事器上的 ~/.ssh/authorized_keys 文件中。

将本地公钥内容复制到剪贴板:

cat ~/.ssh/id_rsa.pub在目标做事器上,利用文本编辑器打开 ~/.ssh/authorized_keys 文件:

nano ~/.ssh/authorized_keys将剪贴板上的公钥内容粘贴到文件末端,并保存文件。
回到本地机器,考试测验利用密钥身份验证登录:

ssh username@your_server_ip通过 ssh-copy-id 简化公钥支配

ssh-copy-id 命令可以简化将本地公钥复制到远程做事器的过程。
这个命令会自动处理将公钥添加到目标做事器的 ~/.ssh/authorized_keys 文件中。

ssh-copy-id username@your_server_ip

确保更换 username 为你的用户名,your_server_ip 为目标做事器的 IP 地址。
这个命令将提示你输入用户密码,然后将本地公钥复制到目标做事器上。

通过这两种方法,你可以在目标做事器上配置 SSH 密钥身份验证,提高登录的安全性和便利性。

SSH 配置文件详解~/.ssh/config 文件的浸染和构造

~/.ssh/config 文件是一个用于配置 SSH 客户端行为的配置文件。
它许可你为不同的主机设置自定义的配置选项,从而简化 SSH 连接的管理。

创建 ~/.ssh/config 文件:

touch ~/.ssh/config编辑 ~/.ssh/config 文件:

nano ~/.ssh/config利用别名、端口号等配置项简化 SSH 连接

配置文件中可以包含多个主机条款,每个条款定义了连接到远程主机的配置选项。
以下是一个大略的例子:

Host example HostName your_server_ip User username Port 2222 IdentityFile ~/.ssh/id_rsaHost:设置别名,用于代替实际的主机名。
HostName:远程主机的 IP 地址或域名。
User:连接时利用的用户名。
Port:SSH 连接的端口号。
IdentityFile:指定用于身份验证的私钥文件路径。
实际场景中的示例配置文件

以下是一个更为繁芜的 ~/.ssh/config 文件,涵盖了多个主机和配置选项:

Host work HostName work.example.com User alice Port 22 IdentityFile ~/.ssh/work_keyHost personal HostName personal.example.org User bob Port 2222 IdentityFile ~/.ssh/personal_keyHost github HostName github.com User git IdentityFile ~/.ssh/github_key

这样,你只须要利用别名就能够轻松连接到相应的主机,而不必记住每个主机的详细信息。

限定和加固 SSH 访问禁用密码身份验证

禁用密码身份验证是提高 SSH 安全性的主要步骤之一。
这样,用户只能通过密钥身份验证进行访问,而不再依赖弱密码。

在 sshd_config 中禁用密码身份验证:打开 sshd_config 文件:

sudo nano /etc/ssh/sshd_config找到并修正以下行:

PasswordAuthentication no保存文件并重新启动 SSH 做事:

sudo service ssh restart利用 sshd_config 文件设置访问限定

sshd_config 文件包含了用于配置 SSH 做事器的各种选项。
通过适当配置,你可以限定用户访问、定义许可登录的用户、设置登录时的认证办法等。

一些常用的 sshd_config 选项:AllowUsers:指定许可登录的用户列表。
DenyUsers:指定禁止登录的用户列表。
AllowGroups:指定许可登录的用户组列表。
DenyGroups:指定禁止登录的用户组列表。
PermitRootLogin:禁用或限定 root 用户的远程登录。
示例:

AllowUsers alice bobDenyUsers malloryAllowGroups sshusersDenyGroups badusersPermitRootLogin no

以上配置将只许可用户 alice 和 bob 以及属于 sshusers 组的用户登录,同时谢绝用户 mallory 和属于 badusers 组的用户登录。
此外,禁止 root 用户通过 SSH 远程登录。

限定和加固 SSH 访问禁用密码身份验证

为了提高 SSH 安全性,强烈建议禁用密码身份验证,仅利用密钥身份验证。
在 /etc/ssh/sshd_config 文件中找到并修正以下行:

PasswordAuthentication no

然后重新启动 SSH 做事:

sudo service ssh restart

这样配置后,只有拥有有效私钥的用户才能够进行 SSH 登录,大大增加了系统的安全性。

利用 sshd_config 文件设置访问限定

sshd_config 文件包含了 SSH 做事器的配置选项。
通过修正这个文件,你可以设置一些限定,例如限定用户和 IP 地址的访问。

打开 /etc/ssh/sshd_config 文件:

sudo nano /etc/ssh/sshd_config限定用户访问:

AllowUsers username

将 username 更换为许可访问的用户名。
你还可以利用逗号分隔的列表许可多个用户。

限定 IP 地址访问:

AllowUsers username@your_ip

将 username 更换为许可访问的用户名,your_ip 更换为许可访问的 IP 地址。

许可特定 IP 地址段:

AllowUsers username@192.168.1.

这样设置将许可来自 192.168.1 网段的所有 IP 地址的用户访问。

保存文件后,重新启动 SSH 做事:

sudo service ssh restart利用 TCP Wrappers 进行进一步访问掌握

在 /etc/hosts.allow 和 /etc/hosts.deny 文件中,你可以利用 TCP Wrappers 设置更繁芜的主机访问掌握规则。
例如,在 /etc/hosts.allow 中添加以下行:

sshd: 192.168.1.0/255.255.255.0

这样将许可来自 192.168.1 网段的所有主机访问 SSH 做事。

限定和加固 SSH 访问禁用密码身份验证

禁用密码身份验证是提高 SSH 安全性的一种有效方法。
通过仅许可利用密钥进行身份验证,可以防止恶意用户通过密码破解考试测验来访问做事器。

在目标做事器上打开 sshd_config 文件:

sudo nano /etc/ssh/sshd_config

找到并修正以下行:

PasswordAuthentication no

保存文件并重新启动 SSH 做事:

sudo service ssh restart

此时,只有拥有合法私钥的用户才能成功进行 SSH 登录。

利用 sshd_config 文件设置访问限定

sshd_config 文件包含了配置 SSH 做事器行为的各种选项。
通过修正这个文件,可以实现对访问的更精确掌握。

sudo nano /etc/ssh/sshd_config限定用户和 IP 地址

AllowUsers username@your_ip

这个配置将只许可指定用户从指定 IP 地址进行 SSH 登录。

修正 SSH 端口

默认情形下,SSH 做事利用 22 端口。
为了提高安全性,可以修正为其他非常用端口,比如 2222:

Port 2222

确保保存修正并重新启动 SSH 做事。

利用 SSH Agent Forwarding什么是 SSH Agent Forwarding

SSH Agent Forwarding 是一种机制,许可你在本地系统上解锁私钥,然后通过安全地转发到远程主机,以在远程主机上进行身份验证。
这意味着,如果你已经通过密钥身份验证登录到本地机器,你可以利用相同的身份验证在远程主机上实行操作,而无需再次输入密码或私钥。

配置和利用 SSH Agent Forwarding在本地机器上启动 SSH Agent:

eval "$(ssh-agent -s)"添加私钥到代理:

ssh-add ~/.ssh/id_rsa在连接到远程主机时启用 Agent Forwarding:

ssh -A username@your_server_ip

确保更换 username 为你的用户名,your_server_ip 为目标做事器的 IP 地址。

现在,你可以在远程主机上实行须要私钥身份验证的操作,而无需再次输入密码或私钥。

安全把稳事变

只管 SSH Agent Forwarding 供应了便利,但也须要把稳一些安全性问题。
确保遵照以下最佳实践:

只许可受信赖的主机利用 Agent Forwarding。
如果你连接到了不受信赖的主机,可以通过利用 -A 参数禁用 Agent Forwarding。
定期检讨代理并打消不再须要的密钥。
利用 ssh-add -L 命令查看当前加载的密钥列表,并利用 ssh-add -D 打消不再须要的密钥。
在不须要 Agent Forwarding 的情形下禁用它。
只有在确实须要在远程主机上实行私钥身份验证的操作时才启用 Agent Forwarding。

通过理解和精确配置 SSH Agent Forwarding,你可以在保持安全性的同时提高 SSH 的便利性。

多成分身份验证(MFA)先容多成分身份验证的主要性

多成分身份验证(MFA)是一种安全方法,哀求用户在登录时供应两个或多个独立的身份验证成分,以验证其身份。
常日,这包括“知道的事变”(如密码)和“拥有的物件”(如手机或硬件令牌)。

配置和利用基于密钥的 MFA安装并配置 MFA 工具(如 Google Authenticator):

sudo apt-get install libpam-google-authenticator修正 PAM 配置文件:

sudo nano /etc/pam.d/sshd

在文件末端添加以下行:

auth required pam_google_authenticator.so修正 SSH 配置文件,启用 ChallengeResponseAuthentication:

sudo nano /etc/ssh/sshd_config

确保以下行的值为 yes:

ChallengeResponseAuthentication yes重启 SSH 做事:

sudo service ssh restart结合硬件密钥和手机运用的 MFA

除了基于软件的 MFA(如手机运用天生的验证码),你还可以考虑结合硬件密钥,如 YubiKey 或其他支持 U2F 标准的硬件令牌。

在本地机器上配置硬件密钥:

ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk将天生的公钥添加到 SSH 做事器上的 ~/.ssh/authorized_keys。
修正 SSH 配置文件,启用硬件密钥认证:

sudo nano /etc/ssh/sshd_config

确保以下行的值为 yes:

PubkeyAuthentication yesAuthenticationMethods publickey,password publickey,publickey重启 SSH 做事:

sudo service ssh restart

通过结合不同成分的身份验证,你大大提高了做事器的安全性。

定期更新密钥对

为了增加安全性,定期更新 SSH 密钥对是一个好的实践。
可以利用以下步骤天生新的密钥对并更换旧的密钥:

# 天生新的密钥对ssh-keygen -t rsa -b 4096 -f ~/.ssh/new_key -C "your_email@example.com"# 复制新的公钥到目标做事器ssh-copy-id username@your_server_ip -i ~/.ssh/new_key.pub# 测试新密钥是否可以成功登录ssh -i ~/.ssh/new_key username@your_server_ip# 如果统统正常,可以删除旧密钥rm ~/.ssh/id_rsa监控和审计 SSH 访问

启用 SSH 访问的监控和审计功能可以及时创造潜在的安全问题。
可以利用工具如 fail2ban 来监控日志文件,自动封禁恶意的 SSH 连接考试测验。

# 安装 fail2bansudo apt install fail2ban # 对付 Debian/Ubuntusudo yum install fail2ban # 对付 Red Hat/CentOS# 启用 SSH 防护sudo systemctl enable fail2bansudo systemctl start fail2ban

通过审查系统日志文件,特殊是 /var/log/auth.log(对付 Debian/Ubuntu)或 /var/log/secure(对付 Red Hat/CentOS),可以查看 SSH 访问的详细信息。

sudo tail -f /var/log/auth.log # 对付 Debian/Ubuntusudo tail -f /var/log/secure # 对付 Red Hat/CentOS

通过监控和审计 SSH 访问,你可以及时创造非常情形,并采纳相应的方法来保护系统安全。

标签:

相关文章

江苏省常州市历史与现代交融的江南名城

江苏省常州市,地处长江三角洲南翼,是一座具有悠久历史和丰富文化的江南名城。常州以其独特的地理位置、优美的自然风光和深厚的人文底蕴,...

PHP教程 2025-02-18 阅读1 评论0