本文概述
- 安装SSH
- 生成SSH密钥
- 将SSH密钥复制到远程服务器
- 使用SSH登录到远程服务器
SSH(安全外壳)是一种协议, 可在SSH客户端和远程服务器之间创建加密安全的连接。
使用SSH, 你可以安全地管理和管理远程服务器。这可以在许多方面有所帮助。
- 多服务器部署
- 远程停止/启动服务
- 自动化
作为系统管理员, 这是一些基本的知识。
让我们学习如何…
我将生成一个私钥和一个公钥。私钥应存储在ssh客户端计算机上, 并且必须保持安全。必须将公用密钥复制到远程服务器, 才能从SSH客户端计算机登录到该服务器, 而无需输入密码。
你将学到以下内容。
- 安装SSH(如果已经安装, 则不需要)
- 生成SSH密钥
- 将SSH密钥复制到远程服务器
- 使用SSH登录到远程服务器
- 客户端(用户-> geekflare):192.168.56.102
- 远程(用户-> ubuntu):192.168.56.101
sudo apt-get install openssh-serversudo systemctl enable sshsudo systemctl start ssh
你可以运行ssh命令来检查它是否已安装在系统上。
[email
protected]:~$ sshusage: 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-keygenGenerating 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/advantage346 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]:~$ ifconfigenp0s3
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)
总结
【如何在Linux服务器之间交换SSH密钥以进行无密码身份验证()】如你所见, 设置SSH密钥交换非常简单。希望对你有所帮助, 并有兴趣学习Linux管理和故障排除, 然后查看本Udemy课程。
推荐阅读
- Ansible临时命令指南,包含示例
- 如何安装Docker Compose和安装程序()
- 26个带有示例的Docker命令
- 如何安装Puppet Bolt自动执行Sysadmin任务()
- 使用这些顶级工具自动化应用程序测试
- 什么是Dockerfile以及如何创建Docker镜像()
- Android开发—错误记录1(W/System.err: java.net.ConnectException: Connection refused)
- 刷题42. Trapping Rain Water
- Azure App Service-多语言/高可用/自动缩放的Web托管服务