@@ -11,8 +11,6 @@ date: 2099-06-02 00:00
11
11
12
12
OpenSSH 是安全 Shell (SSH) 工具的开放源代码版本,是一个软件。
13
13
Linux 及其他非 Windows 系统的管理员使用此类工具跨平台管理远程系统。
14
-
15
-
16
14
``` dot
17
15
digraph {
18
16
subgraph cluster_3{
@@ -26,41 +24,37 @@ digraph {
26
24
}
27
25
```
28
26
29
- > 官网:https://www.openssh.com/
30
- > Github:https://github.com/PowerShell/openssh-portable/tree/v8.1.0.0
27
+ 官网:https://www.openssh.com/
28
+ Github:https://github.com/PowerShell/openssh-portable/tree/v8.1.0.0
31
29
32
30
## 1.1. 特色与组成
33
31
34
32
SSH 基于客户端-服务器体系结构,用户在其中工作的系统是客户端,所管理的远程系统是服务器。 OpenSSH 包含一系列组件和工具,用于提供一种安全且简单的远程系统管理方法,其中包括:
35
- 1 . ` sshd.exe ` ,它是远程所管理的系统上必须运行的 SSH 服务器组件
36
- 2 . ` ssh.exe ` ,它是在用户的本地系统上运行的 SSH 客户端组件
37
- 3 . ` sftp.exe ` ,这是提供安全文件传输协议的服务,通过 SSH 运行
38
- 4 . ` scp.exe ` 是在 SSH 上运行的文件复制实用工具
39
-
40
- 5 . ` ssh-keygen.exe ` ,为 SSH 生成、管理和转换身份验证密钥
41
- 6 . ` ssh-agent.exe ` ,存储用于公钥身份验证的私钥
42
- 7 . ` ssh-add.exe ` ,将私钥添加到服务器允许的列表中
43
- 8 . ` ssh-keyscan.exe ` ,帮助从许多主机收集公用 SSH 主机密钥
44
-
33
+ 1 . ` sshd ` ,它是远程所管理的系统上必须运行的 SSH 服务器组件
34
+ 2 . ` ssh ` ,它是在用户的本地系统上运行的 SSH 客户端组件
35
+ 3 . ` sftp ` ,这是提供安全文件传输协议的服务,通过 SSH 运行
36
+ 4 . ` scp ` ,是在 SSH 上运行的文件复制实用工具
37
+ 5 . ` ssh-keygen ` ,为 SSH 生成、管理和转换身份验证密钥
38
+ 6 . ` ssh-agent ` ,存储用于公钥身份验证的私钥
39
+ 7 . ` ssh-add ` ,将私钥添加到服务器允许的列表中
40
+ 8 . ` ssh-keyscan ` ,帮助从许多主机收集公用 SSH 主机密钥
45
41
46
42
## 1.2. SSH协议
47
43
48
44
SSH是一种网络协议
49
-
50
- Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境[ 1] 。
45
+ Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。
51
46
52
47
53
48
SSH协议框架中最主要的部分是三个协议:
54
49
55
- 传输层协议(The Transport Layer Protocol):传输层协议提供服务器认证,数据机密性,信息完整性等的支持。
56
- 用户认证协议(The User Authentication Protocol):用户认证协议为服务器提供客户端的身份鉴别。
57
- 连接协议(The Connection Protocol):连接协议将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用。
58
- 同时还有为许多高层的网络安全应用协议提供扩展的支持。
50
+ 1 . ` 传输层协议(The Transport Layer Protocol) ` :传输层协议提供服务器认证,数据机密性,信息完整性等的支持。
51
+ 2 . ` 用户认证协议(The User Authentication Protocol) ` :用户认证协议为服务器提供客户端的身份鉴别。
52
+ 3 . ` 连接协议(The Connection Protocol) ` :连接协议将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用。
59
53
54
+ 同时还有为许多高层的网络安全应用协议提供扩展的支持。
60
55
各种高层应用协议可以相对地独立于SSH基本体系之外,并依靠这个基本框架,通过连接协议使用SSH的安全机制。
61
- ## 1.3. ssh和ssl的联系和区别
62
-
63
56
57
+ ## 1.3. ssh和ssl的联系和区别
64
58
65
59
ssh:Secure Shell,安全Shell,是一个软件,处于应用层旨在取代明文通信的telnet;对应的开源实现程序是openssh。
66
60
@@ -104,6 +98,72 @@ service sshd restart
104
98
## 3.3. ssh-keygen--用于生成安全的密钥
105
99
106
100
101
+ ## 3.4. scp
102
+
103
+ scp都是在本地操作,因此需要指明远端的信息,其实scp本质上也是基于ssh的,因此同样使用-i指定公钥.
104
+
105
+ 需要注意的是scp有如下使用限制:
106
+ 1 . 如果远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用-P参数来设置命令的端口号
107
+ 2 . 使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的。
108
+ 用法:
109
+
110
+ ### 复制:本地-->远端
111
+
112
+ ** 复制文件**
113
+ ``` shell
114
+ # 复制文件
115
+ scp < local_file> remote_username@remote_ip:remote_folder
116
+ scp < local_file> remote_username@remote_ip:remote_file
117
+ scp < local_file> remote_ip:remote_folder
118
+ scp < local_file> remote_ip:remote_file
119
+ scp < local_file> host_alias:remote_folder
120
+ scp < local_file> host_alias:remote_file
121
+ ```
122
+ 第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名
123
+
124
+ 第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名
125
+
126
+ 第5,6个使用了ssh中设置的连接别名.
127
+
128
+ ** 复制文件夹**
129
+ ``` shell
130
+ # 复制文件夹
131
+ scp -r local_folder remote_username@remote_ip:remote_folder
132
+ scp -r local_folder remote_ip:remote_folder
133
+ scp -r local_folder host_alias:remote_folder
134
+ ```
135
+
136
+ 第1个指定了用户名,命令执行后需要再输入密码
137
+ 第2个没有指定用户名,命令执行后需要输入用户名和密码
138
+ 第3个使用了ssh中设置的连接别名
139
+ ### 复制:远程-->本地
140
+
141
+ 从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可
142
+
143
+
144
+ ``` shell
145
+ scp -r remote_username@remote_ip:remote_folder local_folder
146
+ ```
147
+
148
+ 参数说明:
149
+
150
+ -1: 强制scp命令使用协议ssh1
151
+ -2: 强制scp命令使用协议ssh2
152
+ -4: 强制scp命令只使用IPv4寻址
153
+ -6: 强制scp命令只使用IPv6寻址
154
+ -B: 使用批处理模式(传输过程中不询问传输口令或短语)
155
+ -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
156
+ -p:保留原文件的修改时间,访问时间和访问权限。
157
+ -q: 不显示传输进度条。
158
+ -r: 递归复制整个目录。
159
+ -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
160
+ -c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
161
+ -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
162
+ -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
163
+ -l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
164
+ -o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
165
+ -P port:注意是大写的P, port是指定数据传输用到的端口号
166
+ -S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
107
167
108
168
# 4. 案例
109
169
## 4.1. 远程服务器的免密登入
0 commit comments