用法
连接
1 | $ sftp username@remote ip(or remote host name) |
如何使用域名进行连接,参考配置域名的方式;
上传
1 | $ put /path/filename(本地主机) /path/filename(远端主机) |
如果要将本地某个当前目录中的所有文件上传到服务器的当前目录,使用1
$ put *
下载
下载单个文件
1 | $ get /path/filename(远端主机) /path/filename(本地主机) |
下载文件夹
要下载文件夹,使用-r
;1
$ get -r /path/dir /path/dir
执行本地和远程命令
当我们执行常规的 ls, rm, mkdir, dir, pwd 等命令都是对远端进行操作,只需要在这些指令前面加上一个前缀 l 便是对本地进行操作了,比如 lls,lcd, lpwd 等;比如
1 | sftp> ls |
可以看到,ls 是对远程服务器进行操作,而 lls 是对本地文件进行操作;何其的方便… 还需要使用 tools?
日常使用
配置域名
通常 IP 是非常难以记忆的,我们可以通过使用本地的 hosts 文件来配置域名与 IP 的映射关系;1
$ vim /etc/hosts
添加一个 entry
1 | 192.168.17.0 sample |
这样,便可以使用域名进行连接了,
1 | $ sftp root@macpeers |
只是要注意的是,这个时候仍然需要对此域名添加一个本地证书;这个很好理解,因为域名可以对应多个 IP 地址;
连接错误
记录一次在日常使用过程中,SFTP 命令突然失效的问题;问题描述如下,将阿里云上的 Centos 系统更新为了 Ubuntu 系统,结果使用本地的 Transmit 无法通过 SFTP 命令进行连接了,
用户名和密码明明都是对的,却无法被远程服务器接收,搞了半天也不知道原因;最后,使用 SFTP 命令在本地尝试连接试试,
1 | $ sftp root@192.168.17.0 |
从日志中可以看到,是远程服务器的指纹发生了变化,于是,本地认为有人进行了 man-in-middle 攻击,于是拒绝连接;这才是问题的原因;Ok,最直接的办法就是将当前在 /Users/mac/.ssh/known_hosts 中所记录的服务器的信息给抹除,然后再保存一个新的;试试,
1 | $ vim /Users/mac/.ssh/known_hosts |
删除 192.168.17.0 主机的信息;然后再次使用 SFTP 命令连接试试,
1 | $ sftp root@192.168.17.0 |
选择 yes,将证书保存到本地中,
1 | Are you sure you want to continue connecting (yes/no)? yes |
要注意的是,证书保存到本地以后,连接便会立即断开;然后重新进行连接便是,
1 | $ sftp root@192.168.17.0 |
输入 root 对应的密码便可以登录了;
1 | Connected to 192.168.17.0 |
平时使用 Transmit 习惯了,于是遇到点问题便无法解决;这倒是给我敲响了警钟呀;于是从今天开始,但凡是能够通过命令的方式绝不使用工具了;
ssh
如何设置 SSH 免密登录,查看