FTP & SSH 方案
介绍了 FTP 和 SSH 连接的基本方法,以及配置 SSH 别名和免密登录的方法。
软件方案
在 Windows 下有 Xshell
Xftp
这一套成熟的策略,仅需要用邮箱申请一下就会把下载链接发过来;这里讲的是 Mac 下的策略,FTP 用的是 FileZilla
,ssh 的话 Terminal/iTerm 都可以。
FileZilla
的话可以在 https://www.filezilla.cn/download 这个中文网址下载,使用起来非常直观,没什么好讲的。
不过在之前的时候遇到过报错
响应: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.6
错误: 无法和 SFTP 服务器建立 FTP 连接,请选择合适的协议。
错误: 严重错误: 无法连接到服务器
因为 FileZilla 默认是采用 FTP 协议连接的,学校的服务器用的是 SFTP 协议,需要在「文件-站点管理」中新建一个站点,手动配置协议为 SFTP
。
SSH 设置别名
SSH 别名:在 ~/.ssh/config
下进行配置(若没有该文件,touch config
即可),一般可配置为
Host name
HostName ip
Port port
User root
IdentitiesOnly yes
第一行是别名,后面分别是服务器地址、端口和用户名,最后一行含义未知。配置完成后,在 Terminal 输入 ssh name
即可进行连接。
SSH 免密登录
接下来可以设置服务器免密连接,参考 https://tclin914.github.io/251befd7/ 。首先在自己的机器上生成 id_rsa
和 id_rsa.pub
(emm 我在 mac 下好像是 id_rsa-remote-ssh
和 id_rsa-remote-ssh.pub
) ,默认放在 ~/.ssh
下;输入 ssh-keygen -t rsa
即可,注意在配置的时候不要输入密码,完成后即可在上述文件夹下看到这两个文件,这两个 key 分别是 private 和 public 的,下面需要用到 public。解释一下作用
將 id_rsa.pub的內容複製到遠端機器的 ~/.ssh/authorized_keys中,之後在登入時,便會用本地的 id_rsa 與遠端機器的 id_rsa.pub 做認證,便可免輸入密碼登入遠端機器。
下面要做的,就是把你的本地的 key 传入服务器上,也就是把 di_rsa_remote-ssh.pub
中的内容添加到服务器中的 ~/.ssh/authorized_keys
中:
- 优雅的方案,需要掌握一定的 linux 语法
ssh b@B mkdir -p .ssh
cat .ssh/id_rsa.pub | ssh jim@B 'cat >> .ssh/authorized_keys'
第一步建立 .ssh
文件夹,若原本有的话可以忽略;第二步写入 key,这一步的操作等价于 ssh-copy-id -i .ssh/id_rsa.pub jim@B
。注意这两步都需要输入目标服务器的密码。
- 管道操作不太会用,所以下的第二步,我更为无脑的方案是,登录服务器之后用 vim 复制过去(当然这种偏门策略极不优雅)🤣
ssh b@B
vim ~/.ssh/authorized_keys
打开之后将本地的 di_rsa_remote-ssh.pub
中的 key 复制到上面的文件最后。