IT HOW

무엇이는 물어보세요

컨텐츠로 건너뛰기
  • 프로그래밍
  • 파이썬
  • 자바
  • 자바스크립트
  • 리눅스
  • c#

SFTP를 사용하여 비밀번호가없는 백업 제한 액세스를 허용해야합니다. $

Duplicity를 사용하여 컴퓨터에 서버 백업을 수행해야합니다.

duplicity /etc sftp://backup@my.dynamic.ip.address//home/backup

이 작업을 수행하기 전에 다음을 수행하여 암호가없는 액세스를 허용해야합니다.

$ ssh-keygen
$ ssh-copy-id backup@my.dynamic.ip.address
$ ssh backup@my.dynamic.ip.address

내 질문은, 생성 된 공개 키 에서이 SFTP 전송으로 명령을 어떻게 제한합니까?

command="restrict to sftp",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAA…

동적 IP 주소를 사용하고 있으므로 IP가 변경 될 때마다 “알려진 호스트 누락”문제를 어떻게 극복 할 수 있습니까?



답변

질문 1

내 질문은, 생성 된 공개 키 에서이 SFTP 전송으로 명령을 어떻게 제한합니까?

이를위한 두 가지 방법이 있습니다.

1.-sshd를 통한 제한

이 방법에는 SSH 데몬 내에 SFTP 기능을 설정하는 과정이 포함됩니다 sshd. 이것은 /etc/ssh/sshd_config구성 파일을 통해 제어 됩니다. 참고 : 이렇게하면 backup서버에 SFTP 만 허용되도록 사용자가 제한됩니다 .

# /etc/ssh/sshd_config

Subsystem       sftp    internal-sftp

## You want to put only certain users (i.e users who belongs to sftpusers
## group) in the chroot jail environment. Add the following lines at the end
## of /etc/ssh/sshd_config

Match User backup
  ForceCommand internal-sftp

2.-authorized_keys를 통한 제한

이 방법은 sshd_config파일을 변경하지 않습니다 . command=질문에서 이미 언급 한 기능을 통해 사용자 + SSH 키를 단일 명령으로 제한 할 수 있습니다 . 트릭은 어떤 명령을 포함 시키는가입니다. SFTP 서버를이 command=줄 에 넣을 수 있습니다 . 이는 sshd_config파일 에서 SFTP 서버를 설정하는 것과 같은 효과를 갖습니다 .

# User backup's $HOME/.ssh/authorized_keys file
command="/usr/libexec/openssh/sftp-server" ssh-dss AAAAC8ghi9ldw== backup@host

참고 : 사용자에게에 대한 쓰기 권한이있는 경우 ~/.ssh/authorized_keys읽기 및 / 또는 수정할 수 있습니다. 예를 들어, 파일을 다운로드하고 편집 한 후 다시 업로드하여을 제거 commmand=...하여 쉘을 포함하여 훼손되지 않은 명령 액세스 권한을 부여 할 수 있습니다. 사용자에게에 대한 쓰기 권한이있는 경우 ~/.ssh단순히 파일을 연결 해제하고 다시 작성하거나 쓰기 권한을 가질 수도 chmod있습니다. 다음과 같이 ~/.ssh/authorized_keys사용자가 쓸 수없는 장소에 파일을 보관 하는 등의 가능한 해결책이 많이 있습니다 .

Match Group sftponly
    AuthorizedKeysFile      /etc/ssh/authorized_keys/%u

질문 # 2

동적 IP 주소를 사용하고 있으므로 IP가 변경 될 때마다 “알려진 호스트 누락”문제를 어떻게 극복 할 수 있습니까?

이것은 더 까다 롭지 만 파일 from=내의 기능을 사용하면 가능 합니다 authorized_keys. 여기서는 호스트에서만 액세스를 제한하고 있습니다 somehost.dyndns.org.

from = “somehost.dyndns.org”, command = “/ usr / libexec / openssh / sftp-server”, 포트가없는 포워딩, No-X11- 포워딩, No- 에이전트-포워딩, No-Pty ssh-dss AAAAC8ghi9ldw == backup @ host

command=SSH 키 사용을 더욱 제한하기 때문에 이후의 추가 설정 도 마찬가지로 중요합니다.

기능 분석

  • from='hostname1,hostname2,'' -지정된 IP 또는 호스트 이름 패턴에서의 액세스를 제한합니다
  • command='command' -인증 후 지정된 명령을 실행합니다
  • no-pty -pty를 할당하지 않습니다 (대화식 로그인을 허용하지 않습니다)
  • no-port-forwarding -포트 포워딩을 허용하지 않습니다
  • no-X11-forwarding -사용자는 디스플레이 X11 GUI를 제거 할 수 없습니다
  • no-agent-forwarding -사용자는이 호스트를 통해 다른 내부 호스트로 전달할 수 없습니다

“알려진 호스트 누락”에 대한 메시지를 제거하려면 다음과 같이 연결할 때 클라이언트에이 SSH 옵션을 추가 할 수 있습니다.

$ ssh -o StrictHostKeyChecking=no ....

ssh_config이 스위치에 대한 자세한 내용은 매뉴얼 페이지를 참조하십시오 .

사용자의 쉘 ​​제한

위의 두 솔루션 모두 파일 backup에서이 사용자의 셸을 제한 하여 사용자 를 잠그고 싶을 /etc/passwd것입니다. 일반적으로로 설정하고 scponly싶지만 이것에 대한 다른 선택도 있습니다. 이 작업을 수행하는 방법에 대해서는 ” SCP 용 쉘이 필요합니까? ” 라는 U & L Q & A를 참조하십시오 .

위의 # 1에 설명 된대로 /sbin/nologinchroot 기능을 사용하도록 선택한 경우에도 사용할 수 있습니다 . 그러나 # 2에 요약 된 방법을 사용하기 로 결정했다면 의 사용자 쉘에 대해 또는 다른 것을 사용해야 할 것 입니다 .sshd_configscponly/etc/passwd


보너스-위의 # 2 연장

이 사용자에 대한 명령 세트를 표시해야하는 경우에도이를 수행 할 수 있습니다. 다음과 같이 스크립트를 작성하십시오 /home/backup/commands.sh.

#!/bin/sh

case $SSH_ORIGINAL_COMMAND in
  "diskspace")
    df -h
    ;;
  "dirlist")
    ls -1
    ;;
  "apache_restart")
    /etc/init.d/apache restart
    ;;
  *)
    echo "Unknown command"
esac

그런 다음 authorized_keys파일을 다음 과 같이 설정하십시오 .

command="/bin/sh /home/user/commands.sh" ssh-dss AAAAC8ghi9ldw== user@host

backup사용자는 다음과 같이이 명령을 실행할 수 있습니다 :

# diskspace
$ ssh -q user@remote_host diskspace
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/dev-root   39G  2.2G   35G   6% /

# dirlist
$ ssh -q remote_host dirlist
commands.sh
dump.sql

참고 문헌

  • SSH 팁과 요령
  • 더욱 안전한 SSH까지 5 분

답변

제한된 껍질

scponly 또는 rssh 와 같은 제한된 쉘을 지정해야합니다 .

scp 또는 sftp를 사용하면 ssh를 통해 원격 사이트에 연결 한 다음 원격 쉘이 scp 프로세스 또는 sftp 프로세스를 실행합니다. 필요한 것은 scp 또는 sftp만이 로그인을 잠글 수있는 제한된 쉘입니다.


답변


이 글은 리눅스 카테고리에 분류되었고 account-restrictions, key-authentication, sftp, ssh 태그가 있으며 [호호] 야야님에 의해 2022년 12월 13일에 작성되었습니다.

글 네비게이션

← 컴퓨터가 어떻게 오버플로 오류없이 지수 수학을 계산할 수 있습니까? 32 비트 PHP 추상 속성 { abstract public →

태그

  • android
  • apt
  • backup
  • bash
  • boot
  • c#
  • c++
  • command-line
  • css
  • debian
  • email
  • firefox
  • git
  • google-chrome
  • hard-drive
  • html
  • ios
  • iphone
  • java
  • javascript
  • keyboard
  • linux
  • mac
  • macbook
  • macos
  • microsoft-excel
  • mysql
  • networking
  • performance
  • php
  • python
  • security
  • shell
  • ssh
  • terminal
  • ubuntu
  • unix
  • usb
  • vim
  • virtualbox
  • windows
  • windows-7
  • windows-8
  • windows-10
  • wireless-networking

최신 글

  • 디스크 정리에 많은 시간과 CPU가 필요한 이유는 무엇입니까? 많은 시간을 소비하는 것 같습니다. 파일을
  • Vim에서 일반 모드와 삽입 모드 사이에서 커서를 어떻게 변경합니까? 모양 등)를 변경하는 방법을 알고
  • 집계 대 구성 무엇인지 이해하지만 집계가 무엇인지에 대한 명확한
  • Python 생성기 패턴에 해당하는 C ++
  • 소프트웨어 일반인의 경력 경로는 무엇입니까? [닫은] 전문에 대한 질문 이 질문에 영감을. 소프트웨어 전문가가

카테고리

  • c#
  • c++
  • git
  • html
  • 리눅스
  • 서버
  • 소프트웨어
  • 슈퍼유저
  • 안드로이드
  • 애플
  • 우분투
  • 자바
  • 자바스크립트
  • 파이썬
  • 프로그래밍
apthow.com powered by hoya
Go to mobile version