要求:
pycharm为专业版,docker容器的ssh服务是开启的,并且开放了22端口,与远程主机绑定了端口
如果docker容器是通过docker comnpose启动的,也要开启相关服务。
这里就以docker compose 中的容器进行演示
开放端口
在docker-compose.yml配置文件中需要绑定22端口号
ports:
- '33:22' # 主机的33端口绑定容器的22端口
如果是单独启动容器的就要在docker run
的-p
参数中绑定33:22
容器配置
确保容器已经安装了以下服务:
apt-get install openssh-server
apt-get install openssh-client
进入容器中,输入命令service ssh status
查看是否启动ssh
服务,没启动就用service ssh start
启动
root@master:/opt# service ssh status
sshd is not running ... failed!
root@master:/opt# service ssh start
Starting OpenBSD Secure Shell server: sshd.
root@master:/opt# service ssh status
sshd is running.
接着设置容器root账户登录
在root账户下,输入passwd
,输入两次一样的密码
root@master:/opt# passwd
New password:
Retype new password:
passwd: password updated successfully
修改配置文件,允许以root用户登录
root@master:/opt# vim /etc/ssh/sshd_config
# Authentication:
#LoginGraceTime 2m
#PermitRootLogin prohibit-password # 找到这一行,将注释去掉,并将后面的改为yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
# 如果没有就直接在最后添加
PermitRootLogin yes
# 退出保存
重启ssh服务
root@master:/opt# service ssh restart
Restarting OpenBSD Secure Shell server: sshd.
root@master:/opt# service ssh status
sshd is running.
尝试本地windwos 终端ssh连接
ssh root@192.168.1.81 -p 33
# root 是容器的用户名,不是远程主机的用户名
# 192.168.1.81 远程主机的地址
# -p 33 之前与容器22端口绑定的端口号
C:\WINDOWS\system32>ssh root@192.168.1.81 -p 33
The authenticity of host '[192.168.1.81]:33 ([192.168.1.81]:33)' can't be established.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes # 直接输入yes
Warning: Permanently added '[192.168.1.81]:33' (ECDSA) to the list of known hosts.
root@192.168.1.81's password: # 输入之前设置的root账户密码
Linux master 5.4.0-131-generic
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@master:~# uname -s # 成功进入
Linux
root@master:~# uname -a
Linux master 5.4.0-131-generic #147~18.04.1-Ubuntu SMP Sat Oct 15 13:10:18 UTC 2022 x86_64 GNU/Linux
配置pycharm
路径映射配置:
添加Python解释器
配置完成
遇到的问题
在容器里输入各个命令都是正常的,比如pip list
或者python
,但是通过ssh连接过后,就显示命令不存在
参考教程,根据这个教程解决了这个问题
因为我是用root
账户登录的,所以在/root
目录下编辑·.bashrc·,先查看环境变量,输入env
root@master:/opt/bitnami/scripts# env
SPARK_SSL_ENABLED=no
NSS_WRAPPER_GROUP=/opt/bitnami/spark/tmp/nss_group
HOSTNAME=master
JAVA_HOME=/opt/bitnami/java
NSS_WRAPPER_PASSWD=/opt/bitnami/spark/tmp/nss_passwd
SPARK_RPC_ENCRYPTION_ENABLED=no
PWD=/opt/bitnami/scripts
OS_FLAVOUR=debian-11
LIBNSS_WRAPPER_PATH=/opt/bitnami/common/lib/libnss_wrapper.so
SPARK_RPC_AUTHENTICATION_ENABLED=no
HOME=/
SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no
PYTHONPATH=/opt/bitnami/spark/python/:
TERM=xterm
HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop
HADOOP_HOME=/opt/hadoop
SPARK_MODE=master
SHLVL=1
SPARK_HOME=/opt/bitnami/spark
BITNAMI_APP_NAME=spark
LD_LIBRARY_PATH=/opt/bitnami/python/lib/:/opt/bitnami/spark/venv/lib/python3.8/site-packages/numpy.libs/:
APP_VERSION=3.3.1
OS_NAME=linux
PATH=/opt/hadoop/hadoop/sbin:/opt/hadoop/bin:/opt/bitnami/python/bin:/opt/bitnami/java/bin:/opt/bitnami/spark/bin:/opt/bitnami/spark/sbin:/opt/bitnami/common/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HADOOP_LOG_DIR=/var/log/hadoop
OS_ARCH=amd64
OLDPWD=/opt/bitnami/scripts/spark
_=/usr/bin/env
然后在.bashrc
里添加需要的环境变量
然后重新激活:source /root/.bashrc
接着在外部尝试命令
在pycharm 需要在右下角重新选择一下环境,重新加载