SSH和SCP

SSH 和 SCP

1. SSH 登录

基本用法

远程登录服务器

1
2
3
# ssh 用户名@IP地址或域名
ssh user@hostname [-p 22] # 22 是 ssh 默认端口

第一次登录时会有安全提醒,输入 yes 缺人要远程登录服务器,之后输入密码即可登录成功。登录成功之后会将服务器的信息记录到 ~/.ssh/known_hosts 文件中,下次登录的时候就不会再显示安全提示了。

配置别名登录

.ssh/ 目录下创建 config 文件

设置服务器别名、User、HostName,可以为多个服务器设置别名。

1
2
3
4
5
6
7
8
Host myserver
HostName IP地址或域名
User 用户名

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

之后再 ssh 连接服务器的时候就不用之前输入用户名@HostName 那么麻烦了,直接使用别名登录 ssh myserver,输入密码登录。

免密登录

使用密钥可以免密登录,每次输入密码很麻烦对不对~

先生成密钥

1
2
ssh-keygen

生成的密钥会放在 ~/.ssh/ 下,一个公钥一个私钥

  • id_rsa:私钥(私有的东西不要给别人看!!!)
  • id_rsa.pub:公钥

之后想要免密登录哪个服务器,只需把公钥传到服务器上的 ~/.ssh/authorized_keys 文件中。即可免密登录。

也可以使用如下命令一键添加公钥:

1
2
ssh-copy-id myserver

执行命令

设置了免密登录之后,可以在本地终端使用 ssh 在远程服务器上执行命令。

1
2
ssh user@hostname command

比如:显示服务器家目录下的所有文件

ssh myserver ls -a

还可以执行一段 shell 脚本

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

2. SCP 传文件

基本用法

1
2
ssh src to

src 路径下的文件 / 文件夹复制到服务器路径 to

一次复制多个文件

1
2
scp src1 src2 to

scp 可以通过 -P(大 P,ssh 是小 p) 指定端口

1
2
scp -P 22 src1 to

示例:

复制文件夹:将本地家目录下的 tmp 文件夹复制到远程服务器 myserver 上的家目录下

1
2
scp -r ~/tmp myserver:/home/用户名

或者直接使用 myserver:,默认复制到的路径就是家目录下

1
2
scp -r ~/tmp myserver:

从远程服务器 myserver 上复制 tmp 文件夹到本地家目录下

1
2
scp -r myserver:tmp . # . 表示当前所在目录

复制文件:将本地家目录下的 a.txt 文件复制到远程服务器 myserver 上的家目录下

1
2
scp ~/a.txt myserver:

从远程服务器 myserver 上复制 ~/tmp/a.txt 文件到本地家目录下

1
2
scp myserver:tmp/a.txt . # . 表示当前所在目录

有了 scp 之后就可以配置其他服务器了,比如 vimtmux,直接将本地的配置文件复制到远程服务器就 OK 了,太好用了!!!

1
2
scp ~/.vimrc ~/.tmux.conf myserver:

从服务器下载文件到 Windows 本地

不能直接使用 AC Terminal 下载文件到自己的本地,AC Terminal 相当于是另一个机器,只能下载到这台机器上。

所以需要使用本地 Shell,我用的是 Windows Terminal

  1. cd 进入要存放文件的位置,比如 cd D:
  2. scp -r myserver:tmp .:将 myserver 上的 tmp 复制到当前目录下。