赞
踩
欢迎阅读《每天一个Linux命令》系列!在本篇文章中,将介绍通过密钥生成,使用公钥连接管理服务器。
概念
SSH 密钥是用于安全地访问远程服务器的一种方法。SSH 密钥由一对密钥组成:公钥和私钥。公钥存储在远程服务器上,私钥存储在本地计算机上。
通过公钥连接管理Linux服务器优缺点:
优点:
缺点:
密钥管理: 公钥身份验证需要有效地管理密钥对。如果私钥丢失或泄露,可能会导致安全问题。
初次设置复杂性: 初次设置公钥身份验证可能会相对复杂,特别是对于不熟悉密钥管理的用户来说。然而,一旦设置完成,后续的连接将更为简单。
无法处理丢失的私钥: 如果用户丢失了私钥,他们将无法再次连接到服务器,除非管理员重新配置他们的公钥。
不适用于所有场景: 公钥身份验证不适用于所有场景。在某些情况下,可能需要使用其他身份验证方法,如密码身份验证或证书身份验证。
总体而言,使用公钥连接管理Linux服务器提供了更高的安全性和便捷性,但需要合理管理密钥对以确保系统的整体安全。
生成密钥
在本地计算机上生成 SSH 密钥,可以使用 ssh-keygen
命令。
ssh-keygen
提示的意思(可以直接回车,留空默认):
此命令将提示您输入以下信息:
id_rsa
。生成密钥后,将在本地计算机上创建两个文件:
id_rsa
:私钥文件。id_rsa.pub
:公钥文件。[root@chatgpt-test ~]# ll /root/.ssh
总用量 12
-rw-------. 1 root root 1675 12月 8 08:00 id_rsa
-rw-r--r--. 1 root root 399 12月 8 08:00 id_rsa.pub
-rw-r--r--. 1 root root 347 11月 21 05:19 known_hosts
将公钥复制到远程服务器
可以使用 cat
命令+远程命令+重定向组合
cat ~/.ssh/id_rsa.pub | ssh 用户名@远程服务器地址 'cat >> ~/.ssh/authorized_keys'
此命令将将公钥追加到远程服务器上的 authorized_keys
文件中。
演示示例:
假设本地服务器用户名为 root
,IP为192.168.31.223,远程服务器的 IP 地址为 192.168.31.162
,则生成密钥并将公钥复制到远程服务器的操作如下:
#在本地计算机上生成密钥,执行命令后,根据提示,可以设置私钥密码,或者直接回车3次(默认),生成密钥。 [root@chatgpt-test ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:8IlsI9RZn/sDvn10OB5mvm8d+yP/0rVb5cwNQbT1wlg root@chatgpt-test The key's randomart image is: +---[RSA 2048]----+ | . .E .| | . o . . = o.| | . + o . = .| | . . + . . o | | . = S o ...| | o . . o B*=| | . o* =%| | o o=+=| | . ..+BO| +----[SHA256]-----+
从192.168.31.223将公钥复制到192.168.31.162
cat ~/.ssh/id_rsa.pub | ssh root@192.168.31.162 'cat >> ~/.ssh/authorized_keys'
注意事项
authorized_keys
文件具有可写权限。其他方法
也可以使用 cp
命令来将公钥复制粘贴到远程服务器。
或者通过ssh-copy-id 用户名@远程服务器地址
,此命令将公钥复制到远程服务器上的 authorized_keys
文件中。
命令操作
使用 SSH 密钥登录远程服务器的命令如下:
ssh [选项] 用户名@远程服务器地址
命令详细解释
ssh 命令的参数如下:
参数 | 说明 |
---|---|
选项 | 可选参数,用于指定 SSH 连接的属性。 |
用户名 | 远程服务器上的用户名。 |
远程服务器地址 | 远程服务器的 IP 地址或主机名。 |
命令选项
选项 | 说明 |
---|---|
-i | 指定私钥文件的路径。 |
-p | 指定远程服务器的端口号。 |
-t | 启用终端模式。 |
-v | 显示 ssh 命令执行的详细信息。 |
注意事项
ssh-keygen
命令生成 SSH 密钥。cat
命令将公钥复制到远程服务器。sshkey 命令的使用技巧
以下是一些使用 sshkey 设置完成后演示命令的示例:
示例1:使用默认的私钥文件登录远程服务器
ssh root@192.168.31.162
验证:
[root@chatgpt-test ~]# ssh root@192.168.31.162
Last login: Thu Nov 30 08:24:49 2023 from 192.168.31.223
[root@localhost ~]# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 02:11:32:2a:0f:96 brd ff:ff:ff:ff:ff:ff
inet 192.168.31.162/24 brd 192.168.31.255 scope global noprefixroute eth0
示例2:使用指定的私钥文件登录远程服务器
ssh -i ~/.ssh/id_rsa root@192.168.31.162
示例3:使用指定的端口号登录远程服务器
ssh -p 2222 root@192.168.31.162
soreceCRT无密码登录centos7
将生成的私钥,通过命令sz ~/.ssh/id_rsa.pub
下载到本地,通过crt软件读写私钥文件进行登录
即可无秘访问192.168.31.162
设置公钥优先级再前,密码验证再后
添加公钥(点击-属性,选择公钥在本机的路径)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。