在中开启 *** 作示意图

在中开启 *** 作示意图,第1张

在docker中开启sshd *** 作

本文主要介绍了在docker中打开sshd的 *** 作,具有很好的参考价值。希望对你有帮助。来和边肖一起看看吧。

首先,在docker中安装openssh-server。安装完成后,切换到openssh-server的安装目录/etc/ssh。

运行ssh-keygen来生成相应的密钥。

看看sshd的配置文件sshd_config,有以下内容:

HostKey/etc/ssh/ssh_host_rsa_key #HostKey/etc/ssh/ssh_host_dsa_key HostKey/etc/ssh/ssh_host_ecdsa_key HostKey/etc/ssh/ssh_host_ed25519_key

加密方法有RSA、DSA、ECDSA、ED25519,根据这些加密方法生成相应的密钥对。

[root@655f62a4ed82ssh]#ssh-keygen-trsa//生成rsa Generatingpublic/privatersakeypair. Enterfileinwhichtosavethekey(/root/.ssh/id_rsa): Enterpassphrase(emptyfornopassphrase): Entersamepassphraseagain: Youridentificationhasbeensavedin/root/.ssh/id_rsa. Yourpublickeyhasbeensavedin/root/.ssh/id_rsa.pub. Thekeyfingerprintis: 0e:fa:07:36:bb:87:c1:60:14:be:41:41:01:1b:4b:bcroot@655f62a4ed82 Thekey'srandomartimageis: +--[RSA2048]----+ |.+o*+| |..*.| |ooo| |Eoo| |..o.S| |.*o| |..*.| |.oo| |o+| +-----------------+ [root@655f62a4ed82ssh]#ssh-keygen-tdsa//生成dsa Generatingpublic/privatedsakeypair. Enterfileinwhichtosavethekey(/root/.ssh/id_dsa): Enterpassphrase(emptyfornopassphrase): Entersamepassphraseagain: Youridentificationhasbeensavedin/root/.ssh/id_dsa. Yourpublickeyhasbeensavedin/root/.ssh/id_dsa.pub. Thekeyfingerprintis: ee:8c:db:a8:24:68:0d:33:79:eb:09:33:ed:74:c3:66root@655f62a4ed82 Thekey'srandomartimageis: +--[DSA1024]----+ || || || |.| |=.S| |.Bo.| |.=.=.E.| |.Bo=.*| |+..+.+| +-----------------+ [root@655f62a4ed82ssh]#ssh-keygen-tecdsa//生成ecdsa Generatingpublic/privateecdsakeypair. Enterfileinwhichtosavethekey(/root/.ssh/id_ecdsa): Enterpassphrase(emptyfornopassphrase): Entersamepassphraseagain: Youridentificationhasbeensavedin/root/.ssh/id_ecdsa. Yourpublickeyhasbeensavedin/root/.ssh/id_ecdsa.pub. Thekeyfingerprintis: 84:74:de:d1:e4:98:a1:5c:27:25:8e:b7:d6:27:fd:c9root@655f62a4ed82 Thekey'srandomartimageis: +--[ECDSA256]---+ |..*++| |.=*X.| |.**.| |..o.| |Sooo| |.o...| |E.| || || +-----------------+ [root@655f62a4ed82ssh]#ssh-keygen-ted25519 Generatingpublic/privateed25519keypair. Enterfileinwhichtosavethekey(/root/.ssh/id_ed25519): Enterpassphrase(emptyfornopassphrase): Entersamepassphraseagain: Youridentificationhasbeensavedin/root/.ssh/id_ed25519. Yourpublickeyhasbeensavedin/root/.ssh/id_ed25519.pub. Thekeyfingerprintis: d8:40:95:1f:07:96:8a:83:7f:af:19:01:3b:b4:79:91root@655f62a4ed82 Thekey'srandomartimageis: +--[ED25519256--+ |....oo| |..oo.| |.+.Eoo| |..oO...| |.*.S| |.o..| |...| |o.| |o.| +-----------------+ [root@655f62a4ed82ssh]#cp~/.ssh/id_rsa.pub~/.ssh/authorized_keys

生成密钥对后,需要在sshd_config中修改上述文件的位置。

HostKey/root/.ssh/id_rsa HostKey/root/.ssh/id_dsa HostKey/root/.ssh/id_ecdsa HostKey/root/.ssh/id_ed25519

运行/usr/sbin/sshd查看端口号22是否打开,这表示启动成功。

[root@655f62a4ed82ssh]#/usr/sbin/sshd [root@655f62a4ed82ssh]#lsof-i:22 COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAME sshd37root3uIPv42509070t0TCP*:ssh(LISTEN) sshd37root4uIPv62509090t0TCP*:ssh(LISTEN)

补充知识:sshd进程运行在Docker容器中,远程登录闪回(退出状态254)

注:

背景

一个sshd进程在容器中运行,为外部远程连接规划一个端口。每次连接,输入密码后可以立即注销。现象如下:

[root@localhost/]#[email protected] [email protected]'spassword: Lastlogin:TueNov614:46:172018from192.168.0.6 Connectionto192.168.0.6closed.

查看调试信息,最后退出打印如下:

...... Connectionto192.168.0.6closed. Transferred:sent2264,received2224bytes,in0.0seconds Bytespersecond:sent235367.6,received231209.1 debug1:Exitstatus254

分析

从打印来看,已经有上次登录的信息了,所以密码肯定是输入正确,已经登录系统了,也就是初始化环境的时候跪下了。首先,考虑hosts.deny的配置,在对相关配置进行注释后,问题仍然存在。

网上说sshd配置文件中的Usepam配置是带注释的,就是不使用pam认证模块。

#使用PAM是

修改并重启sshd进程后,它真的工作了。至于原因,默认配置是什么,超时断线功能开启。这是胡说八道。默认断链时间不能这么短,以及为什么sshd进程在非docker环境下正常运行。我不接受这个理由。那就再看一眼。没有pam认证就没有问题,所以我把/etc/pam.d/中与sshd相关的配置一一注释了一遍,还是没有发现问题。

这个时候我觉得可以看一下pam的日志,应该会有一些提示。顺便说一下,RedHat和CentOS的pam日志存储在/var/log/secure中,而Ubuntu和Debian将认证信息存储在/var/var/log/auth.log中

果然,pam中有一条错误消息,

Nov615:36:56bbbsshd[11016]:Acceptedpasswordforrootfrom192.168.0.6port56394ssh2 Nov615:36:56bbbsshd[11016]:pam_limits(sshd:session):Couldnotsetlimitfor'nproc':Operationnotpermitted Nov615:36:56bbbsshd[11016]:pam_limits(sshd:session):Couldnotsetlimitfor'nofile':Operationnotpermitted Nov615:36:56bbbsshd[11016]:pam_limits(sshd:session):Couldnotsetlimitfor'memlock':Operationnotpermitted Nov615:36:56bbbsshd[11016]:pam_unix(sshd:session):sessionopenedforuserrootby(uid=0) Nov615:36:56bbbsshd[11016]:error:PAM:pam_open_session():Permissiondenied Nov615:36:56bbbsshd[11016]:Receiveddisconnectfrom192.168.0.6:11:disconnectedbyuser

可见这是由于没有足够的权限设置nproc、nofile、memlock等参数造成的。,这些配置在pam组件中,由以下两个文件保存:

/etc/security/limits.conf

/etc/security/limits.d/90-nproc.conf

在这两个文件中标注相关设置,打开pam认证,ssh连接成功。这就是问题所在。

还有其他方法

1.因为是权限不足导致的,所以在启动容器和使用特权用户时,也可以通过取-privileged参数来解决这个问题。

2.因为在配置ulimit时这是一个错误,所以可以在启动容器时使用-ulimit=[]参数来配置它。

以上在docker中打开sshd *** 作,就是边肖分享的全部内容。希望给大家一个参考,多多支持我们。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/774083.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存