备忘一下

安装wget和ssh

yum install wget
yum install openssh-server

生成key

ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

#这里注意,只需要生成rsa key就行了,dsa连通性测试会报错

#ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key

#ssh-keygen -t dsa -f /etc/ssh/ssh_host_ecdsa_key

#ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key

注意,这里的key如果重新生成重启sshd,客户端连接时若报错

Add correct host key in /Users/czzou/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/czzou/.ssh/known_hosts:22
RSA host key for [1.2.3.4]:36002 has changed and you have requested strict checking.
Host key verification failed.

那么在/Users/czzou/.ssh/known_hosts文件中把对应这个ssh连接的缓存信息删除,即可重新连接。

启动ssh服务

/usr/sbin/sshd

修改密码

passwd 然后 123456 123456

一个不好排查的坑

docker run 启动容器,不带--privileged选项时,会出现一个很难排查的现象,ssh连接建立连接成功的一瞬间,会直接关闭连接。

抓包发现连接建立完成后,客户端会给服务端发Fin包,断开连接。
image.png
感觉有点无从下手,找不到原因。
当然,有可能是前面ssh server给client发送的数据包里边有断开连接的指令。
从网上看了一些资料,没找到类似的案例,但是有提到可能是用户权限问题。

尝试重新启动容器,docker run -it --name ch --privileged -p 36002:22 centos:7 bash,安装并启动sshd,问题解决。

ssh免密登录配置

客户端

~/.ssh目录下若已经存在有公钥(id_rsa.pub)、私钥文件(id_rsa),则可以跳过客户端配置步骤;
否则运行ssh-keygen生成公私钥。

服务端

  1. 修改sshd服务配置

/etc/ssh/sshd_config文件中,下面的选项如果有则解开注释

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys
  1. 配置authorized_keys文件

~/.ssh/authorized_keys不存在,则创建此文件
将客户端的公钥(id_rsa.pub)内容拷贝到authorized_keys中

  1. 重启sshd

☞ 参与评论