scp命令
1、介绍
上传和下载的工具有很多,比如 ftp
命令、lrzsz
工具、scp
工具等等。
之前比较喜欢用的是lrzsz
这个工具,这个工具很方便,上传使用rz -be
、下载使用sz xx.xx
,这样就可以把本地的文件上传或下载到远程服务器或者虚拟机中。但是前提是要先安装这个工具 yum install -y lrzsz
。
本篇介绍的是scp
命令。
这个命令的好处在于它是windows、macos系统自带的命令,使用也非常方便简单。
2、使用
使用方法:
scp 源文件路径 账户@地址:目的路径
- 上传文件
scp C:UsersmbyDesktop1.txt root@192.168.31.101:/home/mby/
然后输入密码即可。
- 下载文件
scp root@192.168.31.101:/home/mby/unlock.jar C:UsersmbyDesktop
然后输入密码即可。
3、免密码登录
windows、macos、linux配置都差不多,这里就以windows举例。
windows + r
打开 cmd 窗口,输入命令:
ssh-keygen
接下来我们需要把这个 id_rsa.pub 公钥传到远程服务器上:
ssh root@192.168.31.100 -p 22 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
完成之后,ssh免密码登录验证一下,成功!
4、配置别名
每次都输入 ssh user@remote -p port,时间久了也会觉得很麻烦,特别是当 user, remote 和 port 都得输入,而且还不好记忆的时候。配置别名可以让我们进一步偷懒。
比如我想用 ssh s01 来替代上面这么一长串,那么在 ~/.ssh/config 里面追加以下内容:
Host s01
HostName 192.168.31.100
User root
Port 22
保存之后,即可用 ssh s01 登入。
5、跳板机
假设现在你有一台处在公网的机器jumpbox,这台机器是在任何地方都能访问到的;
你在实验室也有一台机子lab,这台机子只能在实验室内部访问,但他可以访问公网,你希望能在任何地方都能访问这台机器。
使用 ssh -R 可以轻松地做到这个事情。
jumpbox 可以写成:
root@xx.xx.xx.xx
,然后需要把lab这个内网的机器生成私钥和公钥,把公钥放到jumpbox里。
lab$ ssh -R 10022:localhost:22 jumpbox
jumpbox$ ssh user@localhost -p 10022
lab$
如果上面这个过程成功了,就说明在你执行 ssh -R 10022:localhost:22 jumpbox 之后,你成功地将 lab 上的 22 端口反向转发到了 jumpbox 的 10022 端口。
只要保持这个 ssh 不断,任何一台机器都可以首先连接到 jumpbox,然后通过 ssh user@localhost -p 10022 连回到 lab。可以看到,这里 jumpbox 起到了一个跳板的作用,所以我们把它称作跳板机。