SSH命令

概念

安全外壳协议(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文件之中。

接着再输入密码,就可以登录到服务器上了。

SSH命令_第1张图片

默认登陆端口是 22。如果想指定端口号,需要在登录命令后面加上 -p和 指定端口号。

例如:

ssh user@hostname -p 22

配置文件

在登录的时候,直接用 ip地址是不方便我们记忆的。

我们可以创建一个配置文件 ~/.ssh/config,里面记录的是 别名ip地址的映射。(如图哈希表一样)

这时我们就可以使用别名来登录了。

Host myserver1
    HostName IP地址或域名
    User 用户名

Host myserver2
    HostName IP地址或域名
    User 用户名

后面要登录服务器时,可以直接使用别名 myserver1myserver2

SSH命令_第2张图片
使用别名 myserver登录,在输入密码即可。

SSH命令_第3张图片

密钥登陆

别名登录虽然相比最开始的登录方式,减少了一些工作量。但是当要管理的服务器数量比较多的情况下,每一次登录一个服务器都要输入密码,非常繁琐。

所以,我们可以配置密钥登录,实现免密登录,去除了输密码的繁琐工作。

首先创建密钥:

ssh-keygen

然后按三次回车键即可。

执行结束后,~/.ssh/目录下会多两个文件:

  • id_rsa:私钥
  • id_rsa.pub:公钥

之后想免密码登录哪个服务器,就将公钥传给哪个服务器即可。

例如,想免密登录myserver服务器。则将公钥中的内容,复制到myserver中的~/.ssh/authorized_keys文件里即可。

生成密钥:

SSH命令_第4张图片
SSH命令_第5张图片

接着将公钥 id_rsa.pub的内容复制到服务器上的 ~/.ssh/authorized_keys文件中(自己创建)。
在这里插入图片描述

在这里插入图片描述
SSH命令_第6张图片
粘贴好之后,保存退出即可。

再登录的时候,除了第一次需要密码,后面登录就都不需要密码了。

如果觉得上面的复制公钥的操作比较麻烦,也可以使用一键添加公钥的命令:

ssh-copy-id myserver

执行命令

命令格式:

ssh user@hostname command

以下的命令都是在服务器上执行的。

例如:

ssh user@hostname ls -a

SSH命令_第7张图片

# 单引号中的$i可以求值
ssh myserver 'for ((i = 0; i < 10; i ++ )) do echo $i; done'

SSH命令_第8张图片

# 单引号中的$i可以求值
ssh myserver 'for ((i = 0; i < 10; i ++ )) do echo $i; done'

SSH命令_第9张图片

scp 传文件

基本使用方式

命令格式:

scp source destination

source路径下的文件复制到destination中。

一次复制多个文件:

scp source1 source2 source3 destination

复制文件夹:

# 将本地 家目录下的 tmp文件加 复制到 服务器/home/acs/路径下
scp -r ~/tmp myserver:/home/acs/
# 将本地家目录中的tmp文件夹复制到myserver服务器中的 ~/homework/ 目录下(:后面没写根路径,默认就是家目录下)
scp -r ~/tmp myserver:homework/
将myserver服务器中的 ~/homework/文件夹 复制到 本地的当前路径下。
scp -r myserver:homework .

复制的时候指定服务器的端口号:

scp -P 22 source1 source2 source3  destination

注意: scp-r -P等参数尽量加在sourcedestination之前。

你可能感兴趣的:(Linux,ssh,服务器)