linux客户端无密码监控,如何在Linux服务器之间交换SSH密钥以进行无密码身份验证?...

本文概述

在Linux上实现基于SSH密钥的身份验证

SSH(安全外壳)是一种协议, 可在SSH客户端和远程服务器之间创建加密安全的连接。

使用SSH, 你可以安全地管理和管理远程服务器。这可以在许多方面有所帮助。

多服务器部署

远程停止/启动服务

自动化

和所有的创造力(希望如此)…

作为系统管理员, 这是一些基本的知识。

让我们学习如何…

我将生成一个私钥和一个公钥。私钥应存储在ssh客户端计算机上, 并且必须保持安全。必须将公用密钥复制到远程服务器, 才能从SSH客户端计算机登录到该服务器, 而无需输入密码。

你将学到以下内容。

安装SSH(如果已经安装, 则不需要)

生成SSH密钥

将SSH密钥复制到远程服务器

使用SSH登录到远程服务器

出于演示目的, 我有2台IP地址以下的服务器, 一个系统是客户端, 另一个是服务器, 我将通过ssh从客户端计算机登录。

客户端(用户-> geekflare):192.168.56.102

远程(用户-> ubuntu):192.168.56.101

安装SSH

在执行本文中提到的步骤之前, 请确保在服务器上安装了openssh-server。如果尚未安装, 请运行以下命令进行安装。

sudo apt-get install openssh-server

sudo systemctl enable ssh

sudo systemctl start ssh

你可以运行ssh命令来检查它是否已安装在系统上。

[email protected]:~$ ssh

usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]

[-b bind_address] [-c cipher_spec] [-D [bind_address:]port]

[-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]

[-i identity_file] [-J [[email protected]]host[:port]] [-L address]

[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]

[-Q query_option] [-R address] [-S ctl_path] [-W host:port]

[-w local_tun[:remote_tun]] destination [command]

生成SSH密钥

这需要在客户端服务器上完成。

运行ssh-keygen命令以生成SSH密钥。要求输入文件, 密码和相同密码时, 只需按Enter键。默认情况下, 它在〜/ .ssh目录中生成一对密钥。 id_rsa是私钥, id_rsa.pub是关联公钥。

[email protected]:~$ ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/home/geekflare/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/geekflare/.ssh/id_rsa.

Your public key has been saved in /home/geekflare/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:3XDm62tzJegGm8oAmFYCyeFZovJOuU42zNgyn9GzH30 [email protected]

The key's randomart image is:

+---[RSA 2048]----+

|o+..             |

|+o+              |

|oo. .     . o    |

|.. *     . *     |

|  B .   S . o.   |

| O o . .  . ... .|

|+ @ o o . E=.  o |

| B + o + .o.= .  |

|  + ... o. oo+   |

+----[SHA256]-----+

它将在〜/ .ssh目录中生成两个新文件。

将SSH密钥复制到远程服务器

私钥应复制到远程服务器上的〜/ .ssh文件夹中。如果没有, 大多数服务器应该已经有此文件夹, 你需要创建一个文件夹。

并且, 这样做:

以你想要连接的用户身份登录到远程服务器。就我而言, 它的ubuntu

确保当前的工作目录是用户的主目录, 然后创建一个.ssh文件夹。你还可以使用以下单个命令创建一个

mkdir -p ~/.ssh

如果你已经有.ssh文件夹, 则对其进行备份。

接下来, 让我们从客户端服务器推送公钥。

在客户端计算机(192.168.56.102)上, 运行以下命令以将远程服务器上的公钥复制到.ssh目录中的authenticated_keys文件中。

[email protected]:~$ cat .ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'

[email protected]'s password:

运行以下命令以设置对远程服务器上的authorized_keys文件的权限。

[email protected]:~$ ssh [email protected] "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"

很好, 这得出密钥交换和权限都已设置。

使用SSH登录到远程服务器

让我们测试一下是否可行!

让我们以geekflare用户身份从客户端计算机(192.168.56.102)登录到远程服务器(192.168.56.101)。

运行以下命令进行测试, 这一次不会询问密码。

[email protected]:~$ ssh [email protected]

Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-151-generic i686)

* Documentation:  https://help.ubuntu.com

* Management:     https://landscape.canonical.com

* Support:        https://ubuntu.com/advantage

346 packages can be updated.

11 updates are security updates.

Last login: Mon Jun 17 00:10:32 2019 from 192.168.56.101

干得好…

我已经成功登录到远程服务器。在命令下方运行将提供远程计算机的IP详细信息。

[email protected]:~$ ifconfig

enp0s3    Link encap:Ethernet  HWaddr 08:00:27:9b:47:86

inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

inet6 addr: fe80::5c62:3267:b752:fe5d/64 Scope:Link

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

RX packets:20239 errors:0 dropped:0 overruns:0 frame:0

TX packets:5406 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:22678039 (22.6 MB)  TX bytes:701710 (701.7 KB)

enp0s8    Link encap:Ethernet  HWaddr 08:00:27:a9:4a:6b

inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0

inet6 addr: fe80::54a9:761c:9034:21a2/64 Scope:Link

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

RX packets:330 errors:0 dropped:0 overruns:0 frame:0

TX packets:197 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:42847 (42.8 KB)  TX bytes:32774 (32.7 KB)

lo        Link encap:Local Loopback

inet addr:127.0.0.1  Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING  MTU:65536  Metric:1

RX packets:997 errors:0 dropped:0 overruns:0 frame:0

TX packets:997 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1

RX bytes:79654 (79.6 KB)  TX bytes:79654 (79.6 KB)

总结

如你所见, 设置SSH密钥交换非常简单。希望对你有所帮助, 并有兴趣学习Linux管理和故障排除, 然后查看本Udemy课程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值