SSH 登录
基本用法
远程登录服务器
1 | # ssh 用户名@IP地址或域名 |
第一次登录时会有安全提醒,输入 yes 缺人要远程登录服务器,之后输入密码即可登录成功。登录成功之后会将服务器的信息记录到 ~/.ssh/known_hosts
文件中,下次登录的时候就不会再显示安全提示了。
配置别名登录
在 .ssh/
目录下创建 config
文件
设置服务器别名、User、HostName,可以为多个服务器设置别名。
1 | Host myserver |
之后再 ssh 连接服务器的时候就不用之前输入用户名@HostName 那么麻烦了,直接使用别名登录 ssh myserver
,输入密码登录。
免密登录
使用密钥可以免密登录,每次输入密码很麻烦对不对~
先生成密钥
1 | ssh-keygen |
生成的密钥会放在 ~/.ssh/
下,一个公钥一个私钥
id_rsa
:私钥(私有的东西不要给别人看!!!)id_rsa.pub
:公钥
之后想要免密登录哪个服务器,只需把公钥传到服务器上的 ~/.ssh/authorized_keys
文件中。即可免密登录。
也可以使用如下命令一键添加公钥:
1 | ssh-copy-id myserver |
执行命令
设置了免密登录之后,可以在本地终端使用 ssh
在远程服务器上执行命令。
1 | ssh user@hostname command |
比如:显示服务器家目录下的所有文件
ssh myserver ls -a
还可以执行一段 shell
脚本
1 | # 单引号中的$i可以求值, 双引号中的$i不可以求值 |
SCP 传文件
基本用法
1 | ssh src to |
将 src
路径下的文件 / 文件夹复制到服务器路径 to
中
一次复制多个文件
1 | scp src1 src2 to |
scp
可以通过 -P(大 P,ssh 是小 p)
指定端口
1 | scp -P 22 src1 to |
示例:
复制文件夹:将本地家目录下的 tmp
文件夹复制到远程服务器 myserver 上的家目录下
1 | scp -r ~/tmp myserver:/home/用户名 |
或者直接使用 myserver:
,默认复制到的路径就是家目录下
1 | scp -r ~/tmp myserver: |
从远程服务器 myserver 上复制 tmp
文件夹到本地家目录下
1 | scp -r myserver:tmp . # . 表示当前所在目录 |
复制文件:将本地家目录下的 a.txt
文件复制到远程服务器 myserver 上的家目录下
1 | scp ~/a.txt myserver: |
从远程服务器 myserver 上复制 ~/tmp/a.txt
文件到本地家目录下
1 | scp myserver:tmp/a.txt . # . 表示当前所在目录 |
有了 scp 之后就可以配置其他服务器了,比如 vim
和 tmux
,直接将本地的配置文件复制到远程服务器就 OK 了,太好用了!!!
1 | scp ~/.vimrc ~/.tmux.conf myserver: |
从服务器下载文件到 Windows 本地
不能直接使用 AC Terminal 下载文件到自己的本地,AC Terminal 相当于是另一个机器,只能下载到这台机器上。
所以需要使用本地 Shell,我用的是 Windows Terminal
cd
进入要存放文件的位置,比如cd D:
scp -r myserver:tmp .
:将 myserver 上的 tmp 复制到当前目录下。
作业代码
homework_0
1 | 在 ~/.ssh 目录下创建 config 文件,配置连接别名 myserver、用户名和 IP |
homework_1
1 | ssh myserver mkdir -p ./homework/lesson_4/homework_1/ |
homework_2
1 | ssh myserver mkdir -p ./homework/lesson_4/homework_2/ |
homework_3
1 | mkdir dir |
homework_4
1 | ssh myserver mkdir -p ./homework/lesson_4/homework_4/ |
remote_mkdir.sh
1 |
|
remote_rmdir.sh
1 |
|