IDEA-Remote-Develop
- Linux远程开发
- 如何设置IDEA远程连接服务器开发环境并结合cpolar实现ssh远程开发(最新推荐)
- IntelliJ IDEA 远程调试:使用 IDEA Remote Debug 进行高效调试的指南
要求
- 服务机 Linux 系统
- 开发机 Windows 11 系统
- 服务机开启 SSH 服务
服务机环境准备
1. 安装Linux系统
测试使用 Virtual Box 安装 CentOS 7.8 虚拟机作为服务机
2. 配置网络
配置虚拟机网络(Host-Only网络)
# 1. 编辑网卡配置文件
sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
# 修改以下配置项
DEVICE=enp0s3
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.137.123
NETMASK=255.255.255.0
GATEWAY=192.168.137.1
DNS1=8.8.8.8
DNS2=8.8.4.4
DNS3=114.114.114.114
# 2. 重启网络服务
sudo systemctl restart network
# 3. 检查ip
ip addr
# 4. 查看路由表
ip route show
# 添加路由表 sudo ip route add default via <gateway-ip>
# 删除路由表 sudo ip route del <destination-network>
# 5. 查看DNS
cat /etc/resolv.conf
# 6. 测试 Ping 宿主机
ping -c4 192.168.56.1 # ping宿主机需要关闭宿主机的防火墙
# 7. 测试 Ping 公网
ping -c4 jd.com # 添加默认路由 sudo ip route add default via 192.168.56.1
如果是连接家里的服务器,可以使用 内网穿透 (cpolar, nps, ngrok, frp) 或者 异地组网(ZeroTier, Tailscale, Cloudflare Tunnel) 等技术实现远程连接
3. 更换国内软件源
# 1. 备份当前的 CentOS-Base.repo
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 2. 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
# 这里以阿里云源为例
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 3. 清除缓存
sudo yum clean all
# 4. 生成新的缓存
sudo yum makecache
# 5. 更新系统(可选)
sudo yum update
4. 安装SSH服务
因为开发机和服务机需要使用 SSH 保持连接,为了安全 考虑,需要修改 SSH 默认端口,并安装一个SSH蜜罐
安装 OpenSSH
# 1. 安装 Vim wget unzip 等工具
sudo yum install -y vim wget unzip
# 2. 安装 SSH 服务
sudo yum install -y openssh
# 3. 查看 SSH 服务状态
sudo systemctl status sshd
# 4. 修改 SSH 端口,改 Port=22 为 2233
sudo vim /etc/ssh/sshd_config
# 5. 添加防火墙规则,允许新端口的流量
sudo firewall-cmd --permanent --add-port=2233/tcp
sudo firewall-cmd --reload
# 6. 重启 SSH 服务
sudo systemctl restart sshd
# 7. 重启 SSH 服务会报错,解决报错 Bind to port 2233 on 0.0.0.0 failed: Permission denied
# 方案一:关闭SELINUX
# 方案二:修改SELINUX 中的 SSH 端口
方案一:关闭SELINUX
# 关闭 SELINUX 将 SELINUX=enforcing 改为 SELINUX=disable
sudo vim /etc/selinux/config
reboot
方案二:修改SELINUX 中的 SSH 端口
# 1、安装修改工具
sudo yum install -y policycoreutils-python
# 2、查看 selinux 中的 SSH 端口(输出默认的端口 22)
sudo semanage port -l | grep ssh
# 3、新增目标端口
sudo semanage port -a -t ssh_port_t -p tcp 2233
# 4、重启 SSH 服务
sudo service sshd restart
配置 Telnet 端口
# 1. 修改 Telnet 端口 将 port 从 23 改为 3322
sudo vi /etc/xinetd.d/telnet
# 2. 添加防火墙规则,允许新端口的流量
sudo firewall-cmd --permanent --add-port=3322/tcp
sudo firewall-cmd --reload
# 3. 重启 Telnet 服务来应用更改
sudo systemctl restart xinetd
# 4. 确认 Telnet 服务已经在新端口上运行:
sudo netstat -tulnp | grep :3322
# 5. 关闭 Telnet 服务,Telnet不安全, 不建议使用
sudo systemctl stop xinetd
安装 SSH Honeypot
可以再安装一个 SSH 蜜罐程序,保存被攻击的记录,此处选择 Cowrie
# 创建挂载目录
mkdir -p /home/light/cowrie/{conf,data,logs}
# 获取默认配置文件 https://github.com/cowrie/cowrie/blob/master/etc/cowrie.cfg.dist
# curl https://raw.githubusercontent.com/cowrie/cowrie/master/etc/cowrie.cfg.dist -o D:/docker/cowrie/conf/cowrie.cfg
docker run -d --env COWRIE_TELNET_ENABLED=yes --name cowrie_temp cowrie/cowrie:latest \
&& docker cp cowrie_temp:/cowrie/cowrie-git/etc /home/light/cowrie/conf/ \
&& docker cp cowrie_temp:/cowrie/cowrie-git/var/lib/cowrie/downloads /home/light/cowrie/data \
&& docker cp cowrie_temp:/cowrie/cowrie-git/var/log/cowrie /home/light/cowrie/logs \
&& docker stop cowrie_temp && docker rm cowrie_temp
# 复制生成默认的配置文件,需要修改 telnet.enable=true
cp /home/light/cowrie/conf/etc/cowrie.cfg.dist /home/light/cowrie/conf/etc/cowrie.cfg
# 运行镜像
docker run -d \
--publish 22:2222 \
--publish 23:2223 \
--volume /home/light/cowrie/conf/etc:/cowrie/cowrie-git/etc \
--volume /home/light/cowrie/data/downloads:/cowrie/cowrie-git/var/lib/cowrie/downloads \
--volume /home/light/cowrie/logs/cowrie:/cowrie/cowrie-git/var/log/cowrie \
--env COWRIE_TELNET_ENABLED=yes \
--net dev \
--restart=always \
--name cowrie \
cowrie/cowrie:latest
# 测试 SSH 及 Telnet 登录
ssh -p 2222 root@172.18.0.2
telnet 172.18.0.2 2223
5. 配置Java开发环境
Java的开发需要 JDK 和 Maven (Gradle) 等,可以从官网下载安装包或源码包,也可以直接使用命令行安装
安装 OpenJDK-21
# 1. 下载 Openjdk 21 的tar.gz包
wget https://download.java.net/openjdk/jdk21/ri/openjdk-21+35_linux-x64_bin.tar.gz
# 2. 解压 Openjdk 包到 /usr/local/openjdk-21
sudo tar -xvzf openjdk-21+35_linux-x64_bin.tar.gz -C /usr/local
sudo mv /usr/local/jdk-21 /usr/local/openjdk-21
# 3. 设置环境变量。全局 /etc/profile 个人 ~/.bash_profile
sudo cat >> /etc/profile << 'EOF'
# Java Enviroment
JAVA_HOME=/usr/local/openjdk-21
JRE_HOME=/usr/local/openjdk-21
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME JRE_HOME CLASSPATH PATH
EOF
# 4. 让更改生效。
source /etc/profile
# 5. 验证安装 -v -version --version
java -version
安装 Maven-3.9.7
# 1. 下载 Maven 3.9.7 的tar.gz包
wget https://apache.osuosl.org/maven/maven-3/3.9.7/binaries/apache-maven-3.9.7-bin.tar.gz
# 2. 解压 Maven 包到 /usr/local/maven-3.9.7
sudo tar -xvzf apache-maven-3.9.7-bin.tar.gz -C /usr/local
sudo mv /usr/local/apache-maven-3.9.7 /usr/local/maven-3.9.7
# 3. 设置环境变量。全局 /etc/profile 个人 ~/.bash_profile
sudo cat >> /etc/profile << 'EOF'
# Maven Enviroment
MVN_HOME=/usr/local/maven-3.9.7
PATH=$MVN_HOME/bin:$PATH
export MVN_HOME PATH
EOF
# 4. 让更改生效。
source /etc/profile
# 5. 验证安装 -v -version --version
mvn -version
安装 Gradle-8.7
# 1. 下载 Gradle 8.7 的tar.gz包
wget https://downloads.gradle.org/distributions/gradle-8.7-bin.zip
# 2. 解压 Gradle 包到 /usr/local/gradle-8.7
sudo unzip gradle-8.7-bin.zip -d /usr/local
sudo mv /usr/local/gradle-8.7 /usr/local/gradle-8.7
# 3. 设置环境变量。全局 /etc/profile 个人 ~/.bash_profile
sudo cat >> /etc/profile << 'EOF'
# Gradle Enviroment
GRADLE_HOME=/usr/local/gradle-8.7
PATH=$GRADLE_HOME/bin:$PATH
export GRADLE_HOME PATH
EOF
# 4. 让更改生效。
source /etc/profile
# 5. 验证安装 -v -version --version
gradle -version
6. 配置前端开发环境
安装 NodeJS-18.18.0
# 1. 下载 Node 18.18.0 的tar.gz包
wget https://nodejs.org/dist/v18.18.0/node-v18.18.0-linux-x64.tar.gz
# 2. 解压 Node 包到 /usr/local/nodejs-18.18
sudo tar -zxvf node-v18.18.0-linux-x64.tar.gz -C /usr/local/
sudo mv /usr/local/node-v18.18.0-linux-x64 /usr/local/nodejs-18.18
# 3. 设置环境变量。全局 /etc/profile 个人 ~/.bash_profile
sudo cat >> /etc/profile << 'EOF'
# Node Enviroment
NODE_HOME=/usr/local/nodejs-18.18
PATH=$NODE_HOME/bin:$PATH
export NODE_HOME PATH
EOF
# 4. 让更改生效。
source /etc/profile
# 5. 验证安装 -v -version --version
node -version
# 6. 执行报错 gcc 和 glibc 版本与 Node不匹配,需要升级 gcc glibc 或者降低 NodeJS 版本
# node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
# node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node)
# node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)
# node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node)
# node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node)
# node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node)