概念
安全外壳协议(Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中建立安全隧道(secure channel)来实现SSH客户端与服务器之间的连接。SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。
SSH 登录
基本使用方式
远程登录服务器:
ssh user@hostname
user
:用户名hostname
:ip地址 或者是 域名
第一次登录时会提示:
The authenticity of host '123.57.47.211 (123.57.47.211)' can't be established.
ECDSA key fingerprint is SHA256:iy237yysfCe013/l+kpDGfEG9xxHxm0dnxnAbJTPpG8.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
此时再输入 yes
,回车。
服务器的信息就会被记录在本地的 ~/.ssh/known_hosts
文件之中。
接着再输入密码,就可以登录到服务器上了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/a22943246193469a9d838f99aea65ba5.png)
默认登陆端口是 22
。如果想指定端口号,需要在登录命令后面加上 -p
和 指定端口号。
例如:
ssh user@hostname -p 22
配置文件
在登录的时候,直接用 ip
地址是不方便我们记忆的。
我们可以创建一个配置文件 ~/.ssh/config
,里面记录的是 别名
到 ip地址
的映射。(如图哈希表一样)
这时我们就可以使用别名来登录了。
Host myserver1
HostName IP地址或域名
User 用户名
Host myserver2
HostName IP地址或域名
User 用户名
后面要登录服务器时,可以直接使用别名 myserver1
和myserver2
。
![在这里插入图片描述](https://img-blog.csdnimg.cn/d9b37c4c7a9b4f399caa74e50e16f0ca.png)
使用别名 myserver
登录,在输入密码即可。
![在这里插入图片描述](https://img-blog.csdnimg.cn/c6b74fb3a4614f71b4f1c92f02f98a2f.png)
密钥登陆
别名登录虽然相比最开始的登录方式,减少了一些工作量。但是当要管理的服务器数量比较多的情况下,每一次登录一个服务器都要输入密码,非常繁琐。
所以,我们可以配置密钥登录,实现免密登录,去除了输密码的繁琐工作。
首先创建密钥:
ssh-keygen
然后按三次回车键即可。
执行结束后,~/.ssh/
目录下会多两个文件:
之后想免密码登录哪个服务器,就将公钥传给哪个服务器即可。
例如,想免密登录myserver
服务器。则将公钥中的内容,复制到myserver
中的~/.ssh/authorized_keys
文件里即可。
生成密钥:
![在这里插入图片描述](https://img-blog.csdnimg.cn/348de555af004bfc97beb43c28bd4013.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/ee47929119db4186bb681bc9f8cec2b6.png)
接着将公钥 id_rsa.pub
的内容复制到服务器上的 ~/.ssh/authorized_keys
文件中(自己创建)。
![在这里插入图片描述](https://img-blog.csdnimg.cn/e9f271778dfb47dfad30f05ef6b8cfa0.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/f7641727f26f482986c5a200005a709a.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/fd15cc1293b74bcfb09267c708d2003b.png)
粘贴好之后,保存退出即可。
再登录的时候,除了第一次需要密码,后面登录就都不需要密码了。
如果觉得上面的复制公钥的操作比较麻烦,也可以使用一键添加公钥的命令:
ssh-copy-id myserver
执行命令
命令格式:
ssh user@hostname command
以下的命令都是在服务器上执行的。
例如:
ssh user@hostname ls -a
![在这里插入图片描述](https://img-blog.csdnimg.cn/63e883f19de54d59bb722c4a60184169.png)
ssh myserver 'for ((i = 0; i < 10; i ++ )) do echo $i; done'
![在这里插入图片描述](https://img-blog.csdnimg.cn/de589104ad694f98b36f5279f0c48656.png)
ssh myserver 'for ((i = 0; i < 10; i ++ )) do echo $i; done'
![在这里插入图片描述](https://img-blog.csdnimg.cn/460e53b6ecf143d1985df01c7d0ab1bc.png)
scp 传文件
基本使用方式
命令格式:
scp source destination
将source
路径下的文件复制到destination
中。
一次复制多个文件:
scp source1 source2 source3 destination
复制文件夹:
scp -r ~/tmp myserver:/home/acs/
scp -r ~/tmp myserver:homework/
将myserver服务器中的 ~/homework/文件夹 复制到 本地的当前路径下。
scp -r myserver:homework .
复制的时候指定服务器的端口号:
scp -P 22 source1 source2 source3 destination
注意: scp
的 -r -P
等参数尽量加在source
和destination
之前。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)