首页 > 系统相关 >Rock Linux 系列4 --- SSH

Rock Linux 系列4 --- SSH

时间:2023-03-14 19:45:08浏览次数:56  
标签:主机 --- host 密钥 Linux id ssh SSH

一、概要

1. 环境

(1) Rocky Linux 9.1

2. 概念

SSH(Secure Shell)是用于两台计算机进行网络通信和数据传输的协议,使用SSH进行通信的两台计算机其通信内容已被加密,这意味着即便在不安全的网络环境中这也是一种可接受的通信方案。

SSH协议最著名的实现是Open SSH。SSH链接的默认端口是22。

二、命令

1. ssh

(1) 连接指定机器"host"

ssh <host(IP/Domain)>

(2) 使用指定用户名"userName"来连接指定机器"host":

ssh <userName>@<host(IP/Domain)>

相同的如下:

ssh -l <userName> <host(IP/Domain)>

(3) 在指定机器"host"上执行制定的命令"command"

ssh host command

比如,在example.com机器上执行"ls /tmp/doc"这条命令:

ssh example.com ls /tmp/doc

(4) 其他参数

-1:仅使用SSH v1;

-2:仅使用SSH v2;

-4:仅使用IPv4地址;

-6:仅使用IPv6地址;

-C:使用数据压缩;

-c:指定数据加密算法;

-F:指定配置文件,默认使用“~/.ssh/config”;

-p:指定要连接的远程机器端口号;

-q:静默模式;

详细可见SSH命令

2. 不想每次SSH连接目标主机时输入密码

SSH支持公钥认证登录模式可以避免每次SSH连接时输入密码,该方案需要配置目标主机sshd,生成客户端密钥,在目标主机上安装客户端密钥等步骤。

(1) 配置目标主机sshd

a. 编辑/etc/ssh/sshd_config

sudo vi /etc/ssh/sshd_config

b. 启用PubkeyAuthentication

PubkeyAuthentication yes

c. 使用root的key登录

需要确保配置文件中开启了以下项目:

PermitRootLogin yes

d. 重启sshd

sudo systemctl restart sshd

(2) 生成客户端密钥

使用ssh-keygen命令工具生成密钥,下面章节会讲到。

(3) 安装密钥

在目标主机上安装客户端密钥有两种方法:

一种是使用下面要讲的ssh-copy-id命令;

另一种是手动安装:

a. 读取公钥(*.pub文件,比如~/.ssh/id_rsa.pub)的内容:

cat ~/.ssh/id_rsa.pub

b. 将文件内容复制到目标主机的authorized_keys文件中

vi ~/.ssh/authorized_keys

c. 赋权

sudo chmod 600 ~/.ssh/authorized_keys

3. ssh-keygen

SSH支持使用公钥加密技术校验请求连接的主机和用户。ssh-keygen是一个用于创建密钥对的工具。

(1) 格式

ssh-keygen [-f keyPath] [-t algorithm] [-b bits] [-q]

其他参数可以参考:ssh-keygen

(2) 最简单的方式

ssh-keygen

运行之后,系统会提示你输入密钥存储的文件路径和密钥密码,默认状态下的存储路径为:

密钥:~/.ssh/id_rsa

公钥:~/.ssh/id_rsa.pub

(3) 密钥算法

a. rsa,目前最常用的密钥算法,建议密钥长度至少2048位,最好是4096位;

b. dsa,一个古老的美国政府使用的算法,已经不再被建议使用;

c. ecdsa,美国政府使用的新一代密钥算法;

d. ed25519, 这是一个加入到OpenSSH中的新算法,并不被所有的客户端支持,所以慎用。

制定算法的格式为:

ssh-keygen -t rsa

(4) 指定密钥长度

ssh-keygen -t rsa -b 4096

4. ssh-copy-id

ssh-copy-id是OpenSSH的一部分,它可以将密钥安装在目标主机上的授权密钥库中(authorized key)。

(1) 格式

ssh-copy-id [-f] [-n] [-i identity file] [-p port] [-o ssh_option] [user@]hostname

-f: 强制添加密钥到目标主机,可能导致目标主机密钥重复;

-i: 指定需要添加到目标主机的密钥文件,强烈建议使用该参数,如果该参数缺省ssh-copy-id将会复制本地所有的密钥到目标主机,此举可能引起风险;

-n: 打印出所有需要安装的密钥,但不会真正执行安装;

-p: 指定ssh连接的端口号,默认为22;

更多参数可参考: ssh-copy-id

(2) 安装ssh密钥到目标主机

ssh-copy-id -i ~/.ssh/mykey user@host

该命令会使用"user"登录目标主机"host"(可能需要输入密码),然后复制密钥到目标主机并添加到authorized_keys文件中。

(3) 执行后的测试

ssh -i ~/.ssh/mykey user@host

在Client上运行以上命令,此时应该不再需要"user"的密码即可连接目标主机"host"。

5. scp (Secure Copy)

scp用于在不同主机之间复制文件,它使用SSH协议进行文件传输。

(1) 格式1: 本地到远程

从本地复制到远程目标主机:

scp file host[:path]

path: 可以是目录或者文件,或缺省;

(2) 格式2:远程到本地

scp host:source [target]

source: 可以是文件,也可以是目录;

target: 与source想对应,缺省为当前目录;

-r: 如果source是目录,则复制整个目录到target,并在target下创建新的目录;

其他参数可参考:scp

三、应用

1. 配置putty使用密钥连接远程主机

未完待续

四、参考

1. 官方

https://www.ssh.com/academy/ssh/command

https://www.ssh.com/academy/ssh/keygen

https://www.ssh.com/academy/ssh/copy-id

https://www.ssh.com/academy/ssh/scp

2. 其他

https://www.ucl.ac.uk/isd/what-ssh-and-how-do-i-use-it

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/s2-ssh-configuration-keypairs

https://www.techtarget.com/searchsecurity/tutorial/How-to-use-PuTTY-for-SSH-key-based-authentication

https://www.techotopia.com/index.php/Configuring_SSH_Key-based_Authentication_on_RHEL

标签:主机,---,host,密钥,Linux,id,ssh,SSH
From: https://www.cnblogs.com/eagle6688/p/17213301.html

相关文章

  • BUUCTF-REVERCE-[2019红帽杯]easyRE
    [2019红帽杯]easyRE​ 偶尔还是得花时间在难题上面啊。虽然很麻烦,但吃透之后真的是受益匪浅,比狂刷简单题有效多了。1.破解1一般而言,寻找非随机数会是比较快捷的方式。......
  • 力扣 (LeetCode)刷题--704. 二分查找
    二分查找是一个非常基础的算法给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示......
  • 大数据技术-spark
    Spark是什么ApacheSpark是一个分布式、内存级计算框架,是一个大数据处理框架基本概念Application:用户编写的Spark应用程序。Driver:Spark中的Driver即运行上述Applica......
  • 数字后端要撒哪些sparecell,撒多少合适 ------ 转载
    本文转载自: https://mp.weixin.qq.com/s/y2j_dRF672a3VtWrUILDog 从有利于功能ECO、时序ECO,且尽量减少面积比例的角度看,APR阶段要撒哪些sparecell,撒多少合适?我们下面......
  • 04_GitHub之SSH免密登录
    SSH免密登录在此电脑的c盘的用户中找到自己的用户文件,我的地址是C:\Users\王杰进入用户文件后右键点击GitBashHere在跳出来的窗口中输入:ssh-keygen-trsa-C"自己G......
  • YonBuilder移动开发-移动原生插件开发环境配置教程
    YonBuilder移动开发可以实现一套代码,多端生成,快速构建企业级移动应用。移动插件市场中有许多功能插件,可添加到应用中使用,提高开发效率。如果插件市场中没有满足需求的插件,......
  • AcWing100 -- 差分 & 贪心
    1.题目描述题目给定我们一个数组,我们每次可以对数组的一段区间加一或者减一,问我们,使得序列所有数字相等的最少操作次数以及方案个数2.思路很容易想到差分,将题目转......
  • HDOJ 2071-2080
    2071MaxNumProblemDescriptionTherearesomestudentsinaclass,Canyouhelpteacherfindthehigheststudent. InputTherearesomecases.Thefirstli......
  • Linux网络服务:DNS域名服务系统
    DNS域名系统服务1.DNS介绍1.1什么是域名?域名(DomainName),简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计......
  • Linux网络服务:DHCP
    网络服务-DHCP1.DHCP简介 DHCP(DynamicHostConfigurationProtocol,动态主机配置协议)是一个工作在应用层的局域网网络协议,数据传输时使用UDP不可靠传输协议工作,通常被应......