【docker】sshd

11 篇文章 1 订阅

虽然说很多人觉得容器应该只运行一个应用,不应该有sshd,但是这里还是以学习的态度记录一下docker搭建sshd的过程。


生成密钥:

ssh-keygen -t rsa

这里我没搞懂passphase是干吗用的,上网查了一下,如果说我采用非密码方式登录,一旦别人登了我的电脑,就可以使用我的key来登录其他的远程主机,所以如果在创建key的时候,输入了passphase,那么以后的每一次登录不仅需要key,还需要输入passphase,这样就算key泄露,或者别人登了我的电脑,他没有passphase也没用,这是对ssh的一点知识补充。

当然默认是可以不用passphase的,也就是在创建key的时候不输入即可。这里还是输入了passphase,12345。


生成的密钥对会放在~/.ssh目录下,修改私钥权限,也即id_rsa,因为这是只能自己用的,所以go权限为0。

chmod 700 ~/.ssh/id_rsa
然后把公钥提取出来,准备放进镜像里。

cat ~/.ssh/id_rsa.pub > authorized_keys


编写run.sh,用于启动容器的sshd进程:

#!/bin/bash
/usr/sbin/sshd -D


dockerfile:

FROM ubuntu:latest  

MAINTAINER YAO

RUN apt-get update && apt-get install -y openssh-server 
RUN mkdir -p /var/run/sshd
RUN mkdir -p /root/.ssh

ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
#RUN chmod 600 /root/.ssh/authorized_keys
RUN chmod 777 /run.sh

EXPOSE 22
ENTRYPOINT ["/run.sh"]

然后构建镜像:

docker build -t sshd .

启动容器:

 docker run -d -p 50010:22 sshd

查看容器:

docker ps



ssh连接:

ssh root@127.0.0.1 -p 50010


如果是第一次登录,那么会询问是否信任这台服务器,如果yes,那么就会把其公钥和ip放入本地主机的~/.ssh/knownhosts文件下,如果服务器和主机的公钥密钥对改了,那么就无法登录了,因为host文件里记录了之前的ip和公钥对,这是会认为新的服务器的公钥变了,有人做了中间人攻击。解决办法是使用ssh-keygen -R ip,或者删除host文件里额对应的信息。

接着,会让输入passphase,之后就ssh登录进去了。


有个问题,每一次都输入passphase很费劲,可以使用key-gen的agent功能。

使用:

ssh-add

添加passphase到私钥:


这样就不必每一次都输入passphase了。


但是、、、这样会不会与passphase的设计初衷相违背呢?个人感觉会吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值