环境:MacOS + iTerm2 (+ zsh)
方法:利用公钥认证方式登录
1. 在本地机器创建公钥,所有提示一路回车:
ssh-keygen -t rsa
2. 将生成在~/.ssh目录下的公钥文件id_rsa.pub复制为目标服务器对应用户下的~/.ssh/authorized_keys文件:
scp ~/.ssh/id_rsa.pub username@host:~/.ssh/authorized_keys
上述username、host分别表示连接目标服务器的用户名、IP。
若提示目录不存在,先在服务器上创建.ssh目录:
mkdir .ssh
若authorized_keys文件已存在,将id_rsa.pub中内容复制追加到已有内容后。
此时ssh username@host已经可以完成免密登录服务器。
3. 利用zsh配置快捷登录,即在.zshrc中配置快捷操作别名(new):
echo "alias new='ssh username@host'" >> ~/.zshrc
然后重新加载.zshrc文件:
source ~/.zshrc
就可以直接输入new完成登录。
4. 若没有使用zsh,是普通bash,可以在~/.ssh/config文件中添加服务器信息,文件不存在则新建,存在则追加,格式:
Host new #别名
HostName host #服务器IP
Port port #端口,默认22
User username #登录用户名
IdentityFile ~/.ssh/id_rsa #私钥文件,参加第一步
保存后,使用ssh new可以登录相应服务器。
5. 使用mac编写服务器上的代码,vim操作比较麻烦,采用sshfs将服务器相应目录挂载到本地,即可使用VS Code等工具打开编写、保存。
确保安装Homebrew,安装指令:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install Caskroom/cask/osxfuse
brew install sshfs
使用sshfs挂载服务器目录:
sshfs username@host:remote_dir local_dir
remote_dir和local_dir分别指需要挂载的服务器目录和挂载到本地形成的本地目录。
使用完成后取消挂载:
umount local_dir
如果电脑休眠或重启导致挂载失效,且无法取消挂载,可以杀掉相应挂载进程:
pgrep -lf sshfs
pkill -9 sshfs
参考:https://blog.csdn.net/jobschen/article/details/52823980
https://blog.csdn.net/zstu_zlj/article/details/53538816
https://www.jianshu.com/p/8723ba79f35a