본문 바로가기
Programing & OS

rocky linux9 fork lift ssh 접속 문제 해결하자

by 자루스 2026. 2. 5.

Centos 에서 Rocky 로 바꿔타면서 문제가 여러개 있었는데

 

구 forklift에서 sftp가 연결되지 않는다는 점이었다. 

터미널 ssh는 수정을 해서 가능하다

cursor vscode등 여기서도 손을 일일히 봐줘야 한다.

(우분투도 잘 연결된다고 ㅜㅜ)

 

더 짜증나는것은 해당서버는 테스트서버라는것이다. 

본서버라면 git만 써도 되니까 상관이 없는데 테스트서버는 별짓을 다 해봐야 하니까 느무느무느무 불편하다.

fork lift4를 쓰면 상관없다고 한다. (하지만 이 회사의 가격정책이 너무나 마음에 안든다. 1년만 업그레이드 지원을 한다나.... 아니면 돈을 더 내라고한다. )
윈도우는 모르겠지만 맥에는 forklift 만한게 없다.

 

그래서 ssh 보안을 내리고 차선책으로 포트변경과 접속키로 대응하기로 했다.
아래와 같이 정리되었다.

 

 

 

 

 

 

 

Rocky Linux 9 · SSH/SFTP 불편 해결 + 보안 강화 정리

목표: Rocky 9(OpenSSH 최신)에서 구형 SFTP(예: ForkLift 구버전) 호환을 위해 예전 알고리즘(ssh-rsa)을 부분적으로 허용하되, SSH 포트 변경키 인증 기반으로 보안을 보완한다.
(IP/포트는 모두 @@@@로 표기)


1) Rocky 9에서 SFTP(구형 클라이언트) 연결이 불편한 이유

  • Rocky Linux 9는 OpenSSH가 최신이라 기본 키/알고리즘이 ed25519, rsa-sha2-* 중심.
  • 구형 SFTP 클라이언트(ForkLift 구버전 등)는 최신 HostKey/Pubkey 알고리즘을 제대로 지원하지 못해 연결 실패가 발생할 수 있음.
  • 해결책: 서버에서 ssh-rsa를 다시 허용(보안 하향)하거나, 도구 업그레이드(ForkLift 최신)로 해결.

2) (타협안) ssh-rsa 허용 + SSH 포트 변경으로 보안 보완

ssh-rsa 허용은 보안이 내려가므로 테스트/개인 서버 한정 권장. 대신 SSH 포트를 바꿔 무차별 대입 공격(스캔)을 체감 수준으로 줄인다.

2-1) ssh-rsa 허용 (서버 전체 또는 제한적 Match)

/etc/ssh/sshd_config에 추가

HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa

# (권장) 특정 사용자만 허용하는 방식 예시
# Match User git
#     HostKeyAlgorithms +ssh-rsa
#     PubkeyAcceptedAlgorithms +ssh-rsa

2-2) SSH 포트 변경(보안 보완)

/etc/ssh/sshd_config에서 포트 추가(테스트 동안 22 유지 권장)

Port 22
Port @@@@

SELinux 포트 허용

semanage port -a -t ssh_port_t -p tcp @@@@
# 이미 등록되어 있으면:
semanage port -m -t ssh_port_t -p tcp @@@@

방화벽 포트 오픈

firewall-cmd --permanent --add-port=@@@@/tcp
firewall-cmd --reload

설정 검사 및 sshd 재시작

sshd -t
systemctl restart sshd

새 포트 접속 테스트

ssh -p @@@@ user@@@@@

※ 새 포트로 접속 확인 후, 22번을 닫고 싶다면 sshd_config에서 Port 22 제거 + 방화벽에서 ssh(22) 허용 제거를 진행.


3) “root 로그인은 꼭 필요”할 때의 현실적인 보안 조합

root 로그인을 완전히 끄지 않고도 안전하게 운영하려면: root는 키로만 로그인, 비밀번호 로그인은 차단이 핵심.

/etc/ssh/sshd_config 권장 설정

PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
  • PermitRootLogin prohibit-password: root 로그인 허용, 단 비밀번호 금지(키만)
  • PasswordAuthentication no: 모든 계정 비밀번호 로그인 차단
  • PubkeyAuthentication yes: 키 인증 허용
  • MaxAuthTries 3: 인증 시도 횟수 제한

3-1) PasswordAuthentication no 적용 전 필수 준비

  1. 먼저 키 로그인이 되는지 실제로 테스트
  2. 특히 root를 유지할 거면 root 계정 키가 있어야 함
  3. 키 로그인 확인 후에만 PasswordAuthentication no 적용 (잠금 방지)

root 키 생성(없으면)

ls -al /root/.ssh/id_ed25519 /root/.ssh/id_ed25519.pub

# 없으면 생성
ssh-keygen -t ed25519 -f /root/.ssh/id_ed25519 -N ""

root 키 로그인 테스트

ssh -i /root/.ssh/id_ed25519 -p @@@@ root@@@@@

최종 적용(문법 검사 후 재시작)

sshd -t
systemctl restart sshd

4) Git push 차단/해제(추가로 나온 이슈 요약)

git push -v“🚫 서버에서는 git push 금지”가 뜨는 경우, 권한/키 문제가 아니라 중앙 저장소(bare repo)의 hook에서 차단 중인 상태.

차단 훅 확인

cd /srv/git/project.git/hooks
ls -al
grep -R "git push 금지\|🚫" -n . 2>/dev/null

임시 해제(가장 안전: 삭제 대신 이름 변경)

mv pre-receive pre-receive.disabled 2>/dev/null
mv update update.disabled 2>/dev/null

마무리

  • 구형 SFTP 호환이 필요하면 ssh-rsa 허용이 가장 확실하지만 보안 하향.
  • 대신 SSH 포트 변경 + 키 인증(비밀번호 차단)로 보안을 보완.
  • root 로그인이 필요하면 PermitRootLogin prohibit-password 조합이 현실적인 타협점.