【Docker】Docker ssh自动化登录

Docker ssh自动化登录

  • 某些自动化任务中,需要进行ssh认证。例如用Repo获取代码时,需要对ssh公钥进行验证。
  • 问题:当ssh首次验证时,会在终端输出如下内容,并要求用户输入相应命令(yes/no)。这样,会导致自动化的任务失败(一直卡再这里,等待命令)。
The authenticity of host 'xx.xx.xx.xx (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx:xx:xx.....xx:xx.
Are you sure you want to continue connecting (yes/no)?
  • 因此,需要进行配置让ssh实现自动登录(跳过该步骤)。
  • 以下为Docker Image中设置,ssh自动化登录。

DockerImages ssh自动登录配置

# 安装ssl
# 配置ssl自动化登录
RUN apt-get update && \
 apt-get install openssh-client -y && \
 rm -rf /var/lib/apt/lists/* && \
 echo "    StrictHostKeyChecking no" >> /etc/ssh/ssh_config && \
 echo "    UserKnownHostsFile /dev/null" >> /etc/ssh/ssh_config

StrictHostKeyChecking是什么?

# ssh首次连接时,不进行公钥确认。不会弹出如下提示(其实,相当于默认输入yes):
# Are you sure you want to continue connecting (yes/no)?
 echo "    StrictHostKeyChecking no" >> /etc/ssh/ssh_config

UserKnownHostsFile是什么?

# ssh 连接远程主机时,将已经连接过的远程主机信息,保存在known_hosts
# 这样,下一次连接时。就认为不是首次连接。不需要输出,
# Are you sure you want to continue connecting (yes/no)?
# 而且,直接读取known_hosts。对远程主机ssh信息,进行验证。
# 问题:如果远程主机ssh变化了,会导致验证失败。ssh无法连接。只能通过删除known_hosts,
# 对应的主机信息。让ssh重新验证。

# UserKnownHostsFile可以指定ssh验证时,使用的known_hosts
# 作用:UserKnownHostsFile指向空。让每次连接ssh,都认为是首次连接。保证,ssh自动化登录,不会失败。
# 注意:这样,可能会导致ssh劫持。请在安全的环境下操作。
echo "    UserKnownHostsFile /dev/null" >> /etc/ssh/ssh_config

你可能感兴趣的:(运维)