Linux配置SSH免密登录“ssh-keygen”的基本用法
Linux配置SSH免密登录“ssh-keygen”的基本⽤法⽬录
1 什么是SSH
2 配置SSH免密登录
2.1 安装必需的软件
2.2 ssh-keygen创建公钥-私钥对
2.3 ssh-copy-id把A的公钥发送给B
2.4 在A服务器上免密登录B服务器
3 扩展说明
3.2 ⽂件权限
3.3 ⽂件的编辑和查看
1 什么是SSH
引⽤百度百科的说明:
SSH 为 Secure Shell的缩写,由 IETF 的⽹络⼩组(Network Working Group)所制定;它是建⽴在应⽤层基础上的安全协议。
SSH 是⽬前较可靠,专为远程登录会话和其他⽹络服务提供安全性的协议。利⽤ SSH 协议可以有效防⽌远程管理过程中的信息泄露问题。
SSH最初是UNIX系统上的⼀个程序,后来⼜迅速扩展到其他操作平台。
为了在不同平台/⽹络主机之间的通信安全, 很多时候我们都要通过ssh进⾏认证. ssh认证⽅式主要有2种:
① 基于⼝令的安全认证: 每次登录的时候都要输⼊⽤户名和密码, 由于要在⽹络上传输密码, 可能存在中间⼈攻击的风险;
② 基于密钥的安全认证: 配置完成后就可以实现免密登录, 这种⽅式更加安全 —— 不需要在⽹络上传递⼝令, 只需要传输⼀次公钥. 常见的git的ssh⽅式就是通过公钥进⾏认证的.
2 配置SSH免密登录
说明: 这⾥演⽰所⽤的服务器操作系统是Cent OS 7. 我们的⽬标是:
A服务器(172.16.22.131) 能免密登录 B服务器 (172.16.22.132).
注意: ssh连接是单向的, A能免密登录B, 并不能同时实现B能免密登录A.
2.1 安装必需的软件
在操作之前, 先确保所需要的软件已经正常安装.
这⾥我们需要安装ssh-keygen和ssh-copy-id, 安装⽅式如下:
# 安装ssh-keygen, 需要确保服务器可以联⽹. 博主这⾥已经安装完成, 所以没有做任何事.
[root@localhost ~]# yum install -y ssh-keygen
Loaded plugins: fastestmirror, langpacks
base | 3.6 kB 00:00:00
epel | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
Loading mirror speeds from cached hostfile
No package ssh-keygen available.
Error: Nothing to do
# 安装ssh-copy-id
[root@localhost ~]# yum install -y ssh-copy-id
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
No package ssh-copy-id available.
Error: Nothing to do
2.2 ssh-keygen创建公钥-私钥对
(1) 在指定⽬录下⽣成rsa密钥, 并指定注释为“shoufeng”, 实现⽰例:
[root@localhost ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -C "shoufeng"
# ~密钥类型 ~密钥⽂件路径及名称 ~ 备注信息
Generating public/private rsa key pair.
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:
9a:e3:94:b9:69:c8:e9:68:4b:dc:fa:43:25:7f:53:f1 shoufeng
The key's randomart image is:
+--[ RSA 2048]----+
| |
| . |
| o |
| . . . E |
| + S. |
| . .. .=o |
| oo.oB. . |
| ..o=o.+ |
| .++oo+ |
+-----------------+
注意: 密钥的⽂件名称必须是id_xxx, 这⾥的xxx就是-t参数指定的密钥类型. ⽐如密钥类型是rsa, 那么密钥⽂件名就必须是id_rsa.
(2) ssh-keygen常⽤参数说明:
-t: 密钥类型, 可以选择 dsa | ecdsa | ed25519 | rsa;
-f: 密钥⽬录位置, 默认为当前⽤户home路径下的.ssh隐藏⽬录, 也就是~/.ssh/, 同时默认密钥⽂件名以id_rsa开头. 如果是root⽤户, 则在/root/.ssh/id_rsa, 若为其他⽤户, 则在/home/username/.ssh/id_rsa;
-C: 指定此密钥的备注信息, 需要配置多个免密登录时, 建议携带;
-N: 指定此密钥对的密码, 如果指定此参数, 则命令执⾏过程中就不会出现交互确认密码的信息了.
举例说明: 同时指定⽬录位置、密码、注释信息, 就不需要输⼊回车键即可完成创建:
ssh-keygen -t rsa -f ~/.ssh/id_rsa -N shoufeng -C shoufeng
(3) 前往~/.ssh/⽬录下查看⽣成的⽂件:
# ⽣成的⽂件以test_rsa开头, test_rsa是私钥, test_rsa.pub是公钥:
[root@localhost .ssh]# ls
test_rsa test_rsa.pub
# 通过cat命令查看公钥⽂件:
[root@localhost .ssh]# cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2JpLMqgeg9jB9ZztOCw0WMS8hdVpFxthqG1vOQTOji/cp0+8RUZl3P6NtzqfHbs0iTcY0ypIJGgx4eXyipfLvilV2bSxRINCVV73VnydVYl5gLHsrgOx+372Wovlanq7Mxq06qAONjuRD0c64xqdJFKb1Ov
# 可以看到最后有⼀个注释内容shoufeng
2.3 ssh-copy-id把A的公钥发送给B
默认⽤法是: ssh-copy-id root@172.16.22.132, ssh-copy-id命令连接远程服务器时的默认端⼝是22, 当然可以指定⽂件、远程主机的IP、⽤户和端⼝:
# 指定要拷贝的本地⽂件、远程主机的IP+⽤户名+端⼝号:
[root@localhost .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@172.16.22.132
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@172.16.22.132's password: # 输⼊密码后, 将拷贝公钥
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -p '22' 'root@172.16.22.132'"
and check to make sure that only the key(s) you wanted were added.
2.4 在A服务器上免密登录B服务器
[root@localhost .ssh]# ssh root@172.16.22.132
Last login: Fri Jun 14 08:46:04 2019 from 192.168.34.16 # 登录成功
3 扩展说明
3.1 其他⽅式发送公钥⽂件
上述2.3步骤是通过ssh-copy-id⼯具发送公钥⽂件的, 当然我们也可以通过其他⽅式实现:
(1) 将A的公钥⽂件发给B:
通过scp命令将A服务器的 公钥⽂件 发送到B服务器的⽤户⽬录下, 因为还没有配置成功免密登录, 所以期间需要输⼊B服务器对应⽤户的密码:
[root@localhost .ssh]# scp id_rsa.pub root@172.16.22.132:/root/.ssh
root@172.16.22.132's password:
id_rsa.pub 100% 390 0.4KB/s 00:00
(2) 在B上创建authorized_keys⽂件:
[root@localhost .ssh]# cd /root/.ssh/
[root@localhost .ssh]# ls
id_rsa.pub
# 通过A服务器的公钥⽣成"authorized_keys"⽂件:
[root@localhost .ssh]# cat id_rsa.pub >> authorized_keys
[root@localhost .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2JpLMqgeg9jB9ZztOCw0WMS8hdVpFxthqG1vOQTOji/cp0+8RUZl3P6NtzqfHbs0iTcY0ypIJGgx4eXyipfLvilV2bSxRINCVV73VnydVYl5gLHsrgOx+372Wovlanq7Mxq06qAONjuRD0c64xqdJFKb1OvS/nyKaOr9
注意: 上述重定向时使⽤>>进⾏追加, 不要⽤>, 那会清空原有内容.
3.2 ⽂件权限
为了让私钥⽂件和公钥⽂件能够在认证中起作⽤, 需要确保权限的正确性:
① 对于.ssh⽬录以及其内部的公钥、私钥⽂件, 当前⽤户⾄少要有执⾏权限, 其他⽤户最多只能有执⾏权限.
② 不要图省事设置成777权限: 太⼤的权限不安全, ⽽且数字签名也不⽀持这种权限策略.
③ 对普通⽤户, 建议设置成600权限: chmod 600 authorized_keys id_rsa id_rsa.pub;
④ 对root⽤户, 建议设置成644权限: chmod 644 authorized_keys id_rsa id_rsa.pub.
3.3 ⽂件的编辑和查看
在Liunx环境下, 如果要查看、复制私钥、公钥, 以及authorized_keys等⽂件, 不要使⽤vim等编辑器打开, 因为它会产⽣不必要的回车;
应该通过cat、more、less等查看命令把内容打印到终端上, 再作查看、复制等操作.
总结
以上所述是⼩编给⼤家介绍的Linux 配置SSH免密登录 “ssh-keygen”的基本⽤法 ,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!
linuxssh使用深度解析(key登录详解)
linuxssh使用深度解析(key登录详解)
Linux SSH 是一种远程登录协议,能够通过加密的方式在网络上安全地传输数据。SSH 允许用户使用远程计算机上的命令行来执行操作,而无需直接物理访问该计算机。SSH 使用公钥加密技术来验证用户身份,并通过密钥登录来确保通信的安全性。
在 Linux 中使用 SSH,可以使用两种方法进行身份验证:密码登录和密钥登录。密码登录需要输入用户名和密码,而密钥登录则使用公钥和私钥进行身份验证。
密钥登录是一种更安全和方便的方式。在密钥登录中,用户生成一对密钥:公钥和私钥。用户将公钥复制到远程计算机上的
`~/.ssh/authorized_keys` 文件中,而私钥则保存在用户本地计算机上。当用户尝试通过 SSH 连接到远程计算机时,系统会使用私钥对用户的身份进行验证。
下面是使用密钥登录的详细步骤:
1. 生成密钥对:使用 `ssh-keygen` 命令生成密钥对。该命令会提示用户选择密钥的保存位置和输入密钥密码。
2. 将公钥复制到远程计算机:使用 `ssh-copy-id` 命令将公钥复制到远程计算机上。该命令会提示用户输入远程计算机的密码。
使用密钥登录有以下优点:
1.安全性:密钥登录使用公钥加密技术,比密码登录更加安全。私钥只保存在用户本地计算机上,不会在网络传输中暴露。 2.方便性:密钥登录可以免去输入密码的麻烦。用户只需输入私钥密码(如果设置了)即可登录。
3.自动化:密钥登录可以与脚本和自动化工具结合使用,实现自动化部署和管理。
需要注意以下几点:
1.密钥的安全性:私钥是用户身份的关键,需要妥善保存。私钥不应该被泄露或丢失,否则可能导致未经授权的访问。
2. 密钥的权限:在将公钥复制到远程计算机上时,需要确保
`~/.ssh/authorized_keys` 文件的权限设置正确。该文件应该只对所有者可写,并且不能对其他用户可读或写。
LinuxSSH命令使用大全
LinuxSSH命令使用大全
1. ssh:
2. scp:
3. sftp:
- 切换本地工作目录:lcd [本地目录路径]
- 切换远程工作目录:cd [远程目录路径]
- 上传文件:put [本地文件] [远程路径]
4. ssh-keygen:
- 生成密钥对:ssh-keygen
- 指定密钥文件名称:ssh-keygen -f [密钥文件名]
- 指定密钥类型:ssh-keygen -t [密钥类型]
5. ssh-agent:
- 启动ssh-agent:eval `ssh-agent`
- 添加私钥:ssh-add [私钥文件路径]
- 列出已添加的私钥:ssh-add -l
- 删除私钥:ssh-add -d [私钥文件路径]
6. ssh-copy-id:
7. sshfs:
- 卸载远程文件系统:umount [本地路径] 8. ssh-keyscan:
- 扫描主机公钥:ssh-keyscan [主机地址]
- 导出主机公钥到文件:ssh-keyscan [主机地址] >> [公钥文件]
9. ssh_config:
- 配置别名主机:Host [别名] / HostName [主机地址] / User [用户名] / Port [端口号]
10. sshd_config:
- 修改SSH服务器监听端口:Port [新端口号]
- 禁止Root用户直接登录:PermitRootLogin no
- 禁止空密码登录:PermitEmptyPasswords no
11. ssh-keyscan:
- 检查服务器公钥指纹:ssh-keyscan -H [主机地址]
12. ssh-add:
- 添加私钥到ssh-agent:ssh-add [私钥文件路径]
- 显示已添加的私钥列表:ssh-add -l
- 删除私钥:ssh-add -d [私钥文件路径]
13. ssh-keyscan:
linux中ssh的用法
linux中ssh的用法
摘要:
1.Linux 中 SSH 的概述
2.SSH 的基本语法
3.SSH 的常用选项
4.SSH 的应用实例
5.SSH 的配置与服务启动
正文:
一、Linux 中 SSH 的概述
SSH(Secure Shell)是 Linux 系统中一种安全的远程连接协议,可以用于在不安全的网络环境中实现安全的远程登录和数据传输。SSH 在应用层和传输层基础上提供了加密登录和数据传输的功能,使得用户可以在本地计算机上安全地连接到远程计算机,并在远程计算机上执行命令。
二、SSH 的基本语法
在 Linux 中,SSH 的基本语法如下:
```
ssh [选项] [用户名]@[IP 地址或域名]
```
其中,`用户名`是登录远程计算机的用户名,`IP 地址或域名`是远程计算机的连接地址。如果没有指定用户名,则默认为当前用户。
三、SSH 的常用选项
SSH 提供了许多选项,以下是一些常用的选项: 1.`-p`:设置 SSH 端口,默认为 22。
2.`-i`:指定使用的身份验证文件。
3.`-l`:指定登录远程计算机的用户名,等同于`user@host`。
4.`-v`:打印详细日志。
5.`-a`:启用身份验证代理。
6.`-x`:启用 X11。
四、SSH 的应用实例
以下是一个使用 SSH 的实例:
```
ssh user@ip_address "ls /home/user"
```
在这个实例中,我们使用 SSH 连接到远程计算机,并在远程计算机上执行`ls /home/user`命令,以查看远程计算机上`/home/user`目录的内容。
五、SSH 的配置与服务启动
在 Linux 系统中,SSH 的配置文件通常位于`/etc/ssh/`目录下。我们可以通过编辑`/etc/ssh/sshd_config`文件来配置 SSH 的服务参数。例如,我们可以修改`Port`参数来更改 SSH 的端口号。
linux ssh用法
Linux 中的 SSH(Secure
Shell)是一种加密的网络传输协议,用于在不安全的网络上安全地进行远程登录和数据传输。以下是 SSH 命令的基本用法:
1. 基本语法:
```
ssh [选项] user@host
```
其中,`user` 是远程计算机的用户名,`host` 是远程计算机的 IP 地址或域名。
2. 常用选项:
- `-p` 或 `--port`:设置
SSH 端口,默认为 22。
- `-i`
或 `--identity`:指定使用的身份验证文件(私钥)。
- `-l` 或
`--login`:指定登录远程计算机的用户名,等同于 `user@host`。
- `-v` 或 `--verbose`:打印详细日志。
- `-a` 或 `--agent`:启用身份验证代理。
- `-x` 或 `--x11`:启用
X11 转发(远程桌面连接)。
3. 实例:
以下是一些 SSH 命令的实例:
- 远程登录:`ssh user@host`
- 远程执行命令:`ssh user@host command`
- 不登录远程主机,仅执行命令:`ssh -l user host command`
- 设置
SSH 端口为 8080:`ssh -p 8080 user@host`
- 使用私钥进行身份验证:`ssh -i private_key user@host`
4. 配置 SSH:
要在 Linux 系统中配置 SSH,可以参考以下步骤:
- 安装:使用软件包管理器(如`apt`、`yum`等)安装 SSH 服务。
- 启动:确保 SSH 服务已启动,可以使用 `sudo service ssh start` 命令启动。
- 配置:编辑 SSH 配置文件(通常位于 `/etc/ssh/ssh_config` 或 `~/.ssh/config`),设置相关选项。
ssh免密登录配置(配置后还需要密码输入密码问题解决)
ssh免密登录配置(配置后还需要密码输⼊密码问题解决)
背景
需要搭建jenkins,⽤来⾃动部署服务到⽬标服务器, 所以需要在jenkins所在机器配置免密登录⽬标服务器
环境
阿⾥云服务器:服务器A(jenkins所在服务器),服务器B(部署⽬标服务器)
步骤
⼀ 服务器A部分
1 登录A,
2 ⽣成秘钥
1)⾸先查看.ssh下是否已经有id_rsa和id_rsa.pub⽂件, 以免被覆盖
2)⽣成秘钥
ssh-keygen -t rsa -C "xxx@jenkins"
3)将在.ssh⽂件夹下⽣成2个⽂件 id_rsa, id_rsa.pub, 重命名为 id_rsa_jenkins,id_rsa_jenkins.pub 以免以后冲突
3 配置config
在~/.ssh 下 创建config⽂件
Host pre1
HostName xx.xx.xx.xx
Host pre2
HostName xx.xx.xx.xx
Host *
User 登录⽬标机器的⽤户
Port 登录⽬标机器的端⼝
IdentityFile ~/.ssh/id_rsa_jenkins 私钥所在路径
由于⽤户,端⼝号,秘钥, 都是通⽤的,所以以通配符来配置, 只有服务器地址不同, 每个⽬标服务器单独配置
4 拷贝 id_rsa_jenkins.pub 内的内容
⼆ 服务器B部分
1 使⽤要免密登录的账户登录服务器B
2 在~/.ssh⽂件夹下 查看是否有 authorized_keys 没有则创建
3 将id_rsa_jenkins.pub的内容, 追加到authorized_keys后⾯
4 查看 /ect/ssh/sshd_config
需要有如下配置
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
5 切换到root⽤户 重启 sshd : service sshd restart
linux下ssh远程登录服务器入门操作
linux下ssh远程登录服务器⼊门操作
使⽤⽤户名密码登录
1. 在命令⾏中输⼊命令:
ssh username@ip_address -p port之后系统会提⽰输⼊密码,输⼊后即可登录如果不添加-p选项,则默认是22端⼝还可以使⽤-l选项输⼊⽤户名:
ssh -l username ip_address -p port使⽤密钥登录(不使⽤密码)
1. ⾸先⽣成密钥,在任意⽬录下输⼊命令:
ssh-keygen -t rsa -P ''-P表⽰密码,-P ''表⽰空密码之后系统会提⽰输⼊⽣成的密钥⽂件的⽂件名,可以输⼊任意名称,⽐如id_rsa,回车系统会在当前⽬录下⽣成id_rsa与id_rsa.pub两个⽂件
2. 在根⽬录下新建.ssh⽂件夹,将⽣成的密钥⽂件拷贝过去
mkdir -p ~/.ssh-p选项表⽰如果⽂件夹已经存在则不再新建。然后将之前⽣成的两个⽂件都拷贝到.ssh⽂件夹中
cp id_rsa* ~/.ssh/3. 把公钥⽂件id_rsa.pub拷贝到需要登录的服务器上⽤scp命令
scp -P port ~/.ssh/id_rsa.pub username@ip_address:~-P表⽰要登录服务器的端⼝好,不加默认为22。之后系统会提⽰输⼊密码,输⼊即可完成拷贝
4. 登录远程服务器,在⽤户根⽬录下新建.ssh⽂件夹(如果不存在),在其中新建authorized_keys⽂件(如果不存在),把id_rsa.pub添加到authorized_keys⽂件中
mkdir -p ~/.ssh这是在远程服务器上新建ssh⽂件夹
cat id_rsa.pub >> .ssh/authorized_keys将id_rsa.pub⽂件添加到authorized_keys⽂件中(如⽂件不存在则新建)注意:要保证.ssh与authorized_keys⽤户⾃⼰都有写权限
5. 退出当前远程登录,之后就可以不使⽤密码远程登录了
VScode配置SSH免密登录远程Linux服务器
VScode配置SSH免密登录远程Linux服务器
⼀、服务器端配置
1. 检查windows中是否安装ssh:
2. ⽣成id_rsa.pub(⽤github时⽣成过,这步忽略)
3. 将C://Users/xxx/.ssh/id_rsa.pub拷贝到服务器的~/.ssh/authorized_keys,请不要采⽤复制粘贴⽂本的⽅式,我是⽤xftp将⽂件复制到服务器,再执⾏如下命令:cat id_rsa.pub >> authorized_keys4. 修改/etc/ssh/sshd_config:
RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile ~/.ssh/authorized_keys5. 重启ssh: service sshd restart6. 在CMD中ssh name@x.x.x.x (name为服务器登录名),如果没有提⽰输⼊密码,则配置成功
以上操作都完成后还是不⾏可以尝试修改⽂件权限如下:sudo chmod 600 authorized_keyssudo chmod 700 ~/.ssh7. 如果在保证配置免密成功的前提下,希望关闭密码登录,可以修改/etc/ssh/sshd_config:PasswordAuthentication no ( 谨慎操作,免密登录配置失败的话就和服务器说再见了。。)再重启sshd服务
⼆、VScode配置
1. 安装remote-ssh插件
2. 安装完插件,侧边栏会多出来⼀个Remote Explorer
选择第⼀个就⾏3. 编辑config⽂件,图中我已经添加了两个服务器
其中:Host:⾃定义远程连接的名字Hostname: 服务器IP地址User: ⽤户名
4. 然后点击左侧创建的remote连接,就可以连上我们的的服务器愉快的coding了。
Linux操作系统设置SSH及SFTP通过密钥登录
Linux操作系统设置SSH及SFTP通过密钥登录如果你使⽤过Linux操作系统的VPS或其他服务器,可能在登录时经常会提⽰你有多少次登录失败的记录。这种登录失败的记录实际上也就是攻击者使⽤脚本⾃动扫描全⽹的IP然后进⾏筛选和测试,最终脚本会使⽤内置的密码组尝试登录开放22端⼝的Linux服务器。
当然如果登录成功那么意味着你的服务器就是被⿊了,除了搜寻服务器中有价值的内容外就是充当⾁鸡了。
为此我们可以关闭掉22端⼝使⽤密钥来进⾏登录,这样⼦可以瞬间把服务器的安全性提⾼好⼏个档次呢。
以下是基本的操作流程:
1、登录Linux服务器来⽣成公钥和私钥:
2、进⼊刚刚⽣成密钥对的默认路径,然后将⽣成的公钥安装到操作系统上:
3、键⼊以下命令对公钥和⽬录设置权限:
4、通过FTP⼯具将SSH配置⽂件(/etc/ssh/sshd_config)下载本地编辑(也可直接⽤vim进⾏编辑):
请将以下三项内容前的#号删除(#号为注释符、即不⽣效),如果对应项后⾯默认的是No则改成Yes
注意:如果你本⾝并不是使⽤Root账户登录的那么不要修改PermitRootLogin选项包括前⾯的#号。
5、修改完成后将sshd_config再上传并覆盖掉服务器上原有的⽂件,覆盖成功后重启SSH服务:
6、将私钥/root/.ssh/id_rsa下载到本地进⾏测试,以XShell为例在管理中把验证⽅法改成Key:
依次点击⽤户密钥后的浏览、导⼊并选择刚刚下载的id_rsa⽂件,选中后点击确定即可(密码即密钥密码)
更改后SFTP连接也同样需要使⽤密钥进⾏登录,以FileZilla为例:
点击⽂件—管理—选择站点—常规—登录类型—密钥⽂件—浏览—然后选择私钥⽂件,FileZilla会提⽰你转成Putty的PPK格式你按提⽰操作即可。
7、在SSH和SFTP测试都可以使⽤密钥登录后我们再次编辑SSH配置⽂件(就刚刚下载的sshd_config):
将PasswordAuthentication前⾯的#删除并将后⾯的Yes改成No即可禁⽌使⽤密码来登录SSH和SFTP。
Linux命令高级技巧使用sshagent进行SSH密钥代理
Linux命令高级技巧使用sshagent进行SSH密钥代理
Linux命令高级技巧使用ssh-agent进行SSH密钥代理
在Linux系统中,使用SSH协议进行远程连接是非常常见的操作。然而,每次连接时都需要输入密码并不是一个高效的方式。为了提高安全性和方便性,可以使用SSH密钥代理工具ssh-agent来管理密钥,并实现免密码登录。
1. SSH密钥认证简介
SSH密钥认证是一种基于非对称加密算法的身份验证方式。它使用公钥和私钥配对来进行加密和解密操作。用户在本地生成一对密钥,将公钥部署到需要连接的远程主机上,而私钥则保留在本地。当用户进行远程连接时,系统会使用私钥进行身份验证,实现无需密码输入即可登录的效果。
2. ssh-agent工具介绍
ssh-agent是一个用于管理SSH私钥的工具,它可以在后台运行,提供“代理”功能,免去用户每次连接时输入密码的麻烦。当用户第一次使用ssh-agent进行连接时,需要输入私钥的密码进行解锁,解锁成功后,ssh-agent会将解锁后的私钥保存在内存中,并在一定时间内提供给SSH客户端使用。
3. 启动ssh-agent 在Linux系统中,使用ssh-agent非常简单。只需执行以下命令即可启动ssh-agent:
```
eval $(ssh-agent)
```
执行后,会显示出一个类似于以下的提示:
```
Agent pid 1234
```
这表示ssh-agent已经成功启动,并且会将进程ID(PID)显示出来。
4. 添加私钥到ssh-agent
在启动ssh-agent之后,还需要将需要使用的私钥添加到ssh-agent中。执行以下命令:
```
ssh-add /path/to/private_key
```
这里的`/path/to/private_key`是私钥文件的路径。添加成功后,会需要输入私钥的密码进行解锁。
5. 使用ssh-agent进行SSH连接 完成上述步骤后,就可以使用ssh-agent进行SSH连接了。只需执行以下命令即可:
LinuxSSH使用安全秘钥登录
LinuxSSH使⽤安全秘钥登录
1,客户端⽣成密钥对
#ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):按回车键或设置密钥的存储路径
Created directory '/root/.ssh'.
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:
40:32:48:18:e4:ac:c0:c3:c1:ba:7c:6c:3a:a8:b5:22 root@hello
The key's randomart image is:
+--[ RSA 2048]----+
|+*..o . |
|*.o + |
|o* . |
|+ . . |
|o.. S |
|.. + |
|. = |
|E+ . |
|+.o |
+-----------------+
2,把客户端主机中⽣成的公钥⽂件传送到远程主机:
# ssh-copy-id 192.168.10.10
The authenticity of host '192.168.10.20 (192.168.10.10)' can't be established.
ECDSA key fingerprint is 4f:a7:91:9e:8d:6f:b9:48:02:32:61:95:48:ed:1e:3f.
Are you sure you want to continue connecting (yes/no)? yes
