方案一:利用ssh的config文件来管理SSH回话以及快捷登录

  1. ~/.ssh/目录下新建config文件,并按如下格式分别添加需要保存的SSH会话:

image.png

  1. 在连接ssh时可以直接使用别名来登录,但是仍需要手动输入密码

image.png

方案二、expect + iterm2

  1. 找一个目录创建一个 expect脚本文件,内容如下: ```bash

    !/usr/bin/expect

set PORT 22 set HOST xx.xx.xx.xx set USER xxxx set PASSWORD xxxxxx

spawn ssh -p $PORT $USER@$HOST expect { “yes/no” {send “yes\r”;exp_continue;} “password:“ { send “$PASSWORD\r” } } interact

  1. 2. 进入iterm2-->preference-->profiles,新建一个配置标签,内容如下:
  2. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/770522/1655172837514-f7b77a39-9014-49e3-b0df-941da32b53f6.png#clientId=u7f0475b9-6a93-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=1312&id=u81de42dc&name=image.png&originHeight=1312&originWidth=1908&originalType=binary&ratio=1&rotation=0&showTitle=false&size=187915&status=done&style=none&taskId=uf9aa4180-18b3-4a7a-a83d-78618c0c1d3&title=&width=1908)
  3. 3. 然后再iterm2中新建中断时选择该profile即可自动登录打开回话
  4. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/770522/1655172882765-2c5d4785-6c2b-4184-830f-ddd8dd6903c5.png#clientId=u7f0475b9-6a93-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=728&id=u72a12364&name=image.png&originHeight=728&originWidth=1964&originalType=binary&ratio=1&rotation=0&showTitle=false&size=457295&status=done&style=none&taskId=u912dbc36-4d5d-4d0a-9f78-7d41facd721&title=&width=1964)<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/770522/1655172891087-f8d06379-d12f-48ad-b436-5ca91c1b913d.png#clientId=u7f0475b9-6a93-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=1394&id=ufc46874d&name=image.png&originHeight=1394&originWidth=3046&originalType=binary&ratio=1&rotation=0&showTitle=false&size=454972&status=done&style=none&taskId=u4336830e-c113-484e-b8e0-7af73a5263b&title=&width=3046)
  5. <a name="iziSo"></a>
  6. ## 方案三、sshpass免密登录
  7. <a name="pfFNp"></a>
  8. ### 安装sshpass
  9. 1. brew安装sshpass
  10. ```bash
  11. brew install http://git.io/sshpass.rb
  1. 在较新版本的MacOS中直接使用brew安装可能会提示不安全,并且拒绝安装时,可以通过把sshpass.rb下载至本地后再安装的方式解决: ```bash wget https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb

brew install sshpass.rb

  1. 1. `sshpass.rb`文件内容如下,为了防止github因为和谐不可访问的情况时使用(新建一个文件输入下面的内容后,再按照上面的方法安装即可):
  2. ```ruby
  3. require 'formula'
  4. class Sshpass < Formula
  5. url 'http://sourceforge.net/projects/sshpass/files/sshpass/1.06/sshpass-1.06.tar.gz'
  6. homepage 'http://sourceforge.net/projects/sshpass'
  7. sha256 'c6324fcee608b99a58f9870157dfa754837f8c48be3df0f5e2f3accf145dee60'
  8. def install
  9. system "./configure", "--disable-debug", "--disable-dependency-tracking",
  10. "--prefix=#{prefix}"
  11. system "make install"
  12. end
  13. def test
  14. system "sshpass"
  15. end
  16. end

sshpass + alis别名实现命令行中快捷的免密登录

  1. ~/.zshrc中添加alias: :::info 因为我的shell使用的是zsh所以是修改.zshrc文件,如果是使用的bash则是.bashrc :::

    1. ## 替换下面的用户、密码、IP以及别名为你自己的
    2. alias sshyourhost="sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no YOUR_USERNAME@YOUR_HOST

    image.png

  2. 执行source ~/.zshrc,使配置的别名生效

image.png

  1. 在终端命令行中直接输入你设置的别名(例如:sshjump),即可快捷免密的连上服务器

image.png

sshpass + iterm2的Profile实现快捷登录

  1. 进入iterm2—>preference—>profiles,新建一个配置标签,内容如下:

image.png

  1. ## 替换{}为实际环境对应的值
  2. /opt/homebrew/bin/sshpass -p {password} ssh {username}@{ip} -p 22

:::info 为了防止使用ps命令时密码可见,可以使用-f参数从一个文件中读取密码(方法如下):
image.png :::

  1. ## 创建一个存放密码的文件:password
  2. touch password
  3. ## 往文件中写入密码
  4. echo "xxxxx" > password
  5. ## 替换{}为实际环境对应的值
  6. /opt/homebrew/bin/sshpass -f {password文件的完整路径} ssh {username}@{ip} -p 22