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登录详解)

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命令使用大全

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的用法

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用法

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免密登录配置(配置后还需要密码输入密码问题解决)

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远程登录服务器入门操作

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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档