SFTP를 사용하여 루트 권한이 필요한 파일을 편집하고 싶습니다.
스마트 카드의 SSH 키 기반 인증-rsa 키를 사용하고 있습니다.
시스템에 루트 레벨 명령을 수행하기 위해 sudo가 필요한 경우 어떻게 해결해야합니까?
SFTP에 대해서만 sudo를 우회하는 방법을 만들 수 있습니까?
sudo 및 키 인증을 유지하는 방법이 있습니까?
우분투에 연결하기 위해 창을 사용하고 있습니다. 우분투에 연결하는 Mac에서도 작동하려면 이것이 필요합니다.
시스템 서비스를 관리하기 위해 SSH 터널링을 수행하는 방법을 알고 있습니다. 현재 루트 사용자 로그인을 직접 사용하지만 비밀번호 로그인이 비활성화되어 있습니다. sudo와 SFTP를 동시에 사용하는 방법을 이해하지 못했습니다. 루트가 아닌 사용자로 로그인 한 다음 각 명령에 대해 에스컬레이션 된 권한이 부여 된 사용자를 로그에 기록하므로 sudo를 사용해야하는 것이 가장 좋습니다.
키 기반 인증을 사용할 때이 문제에 관심을 가져야합니까, 아니면 보안 / 로깅에서 사소한 차이입니까? 키 기반 인증은 로그에 사용자의 일련 번호를 기록하는 것처럼 보이며 루트 사용자가 각 사용자를 식별하기 위해 여러 키를 가질 수 있습니다. 이것은 sudo를 사용하는 것과 같은 효과 인 것 같습니다. 내가 잘못?
답변
SFTP는 사용하는 계정의 제한 사항이있는 파일 작업에 대한 명령 액세스입니다. 더 많은 관리 작업을하려면 ssh를 사용해야하며 sudo 및 SFTP를 동시에 사용할 수 없습니다. SFTP를 사용하여 제한없이 전체 디스크에 액세스해야하는 경우 루트 계정을 사용하여 수행하십시오. 어쨌든 두 개의 다른 세션을 사용하여 sftp와 ssh에서 root로 로그인 할 수 있습니다.
보안 키는 키보드 입력없이 보안을 향상시키고 로깅을보다 쉽게 만듭니다. 로그인하는 데만 도움이되며 모든 계정 사용자에 대해 여러 개의 비밀번호를 사용할 수 있으며 동일한 효과가 있습니다.
편집 : 잊어 버렸습니다 : 사용자 ID를 0에 할당했지만 같은 의미로 위험하지 않은 경우 root와 동일한 효과로 다른 계정을 만들 수 있습니다. 누군가 루트처럼 로그인을 시도하면 혼란 스러울 수 있지만 그 외에는 의미가 없습니다.
답변
sudo로 서브 시스템을 호출하면 나에게 도움이되었습니다.
예를 들어 우분투 호스트에게 :
sftp -s "sudo /usr/lib/openssh/sftp-server" targethost.fqdn
답변
위의 주석에서 @MartinVonWittich가 제안한 것 외에도이 활동을 위해 전용 SSH 키 쌍을 설정하고 루트 사용자의 /root/.ssh/authorized_keys
파일에 추가하여 범위를 단일 명령으로 제한 할 수 있습니다.
# User backup's $HOME/.ssh/authorized_keys file
command="/usr/libexec/openssh/sftp-server" ssh-dss AAAAC8ghi9ldw== backup@host
이렇게하면이 쌍에 해당하는 키가있는 다른 시스템이이 시스템의 SFTP에 루트로 액세스 할 수 있습니다. 배포판에이 수준의 로깅이 있다고 가정하면 파일 syslog
및 / 또는 secure.log
파일 에이 연결에 대한 기록이 여전히 남아 있습니다 .
참고 : 이 방법으로 서버에 액세스하는 사람은 누구나 카트에 액세스 할 수 있으므로 현명하게 사용하십시오. 더 나은 읽기를 계속하고이 기능을 chroot 및 읽기 전용 액세스와 결합하여 더 엄격한 제한을 설정하고 루트로 특정 위치에 대한 대상 액세스를 설정하십시오.
chroot 및 읽기 전용
여기에서 악용 할 수있는 다른 기술은 SFTP 연결을 제한하여 SSH가 사용 된 SSH 키를 기반으로 루트로 특정 위치에 chroot되도록하는 것입니다. 자세한 내용은이 “U & L Q & A에 대한 답변 :” SFTP를 사용하여 암호없는 백업 제한 “을 참조하십시오.
또한 제어 할 수 sftp-server
의 스위치를 통해 -R
하고 -d
.
-d start_directory
specifies an alternate starting directory for users. The pathname
may contain the following tokens that are expanded at runtime: %%
is replaced by a literal '%', %h is replaced by the home directory
of the user being authenticated, and %u is replaced by the user‐
name of that user. The default is to use the user's home
directory. This option is useful in conjunction with the
sshd_config(5) ChrootDirectory option.
-R Places this instance of sftp-server into a read-only mode.
Attempts to open files for writing, as well as other operations
that change the state of the filesystem, will be denied.
답변
내가 따르는 간단한 접근 방식은 sftp를 사용하여 파일을 스테이지 영역 ( mkdir
서버에 대한 권한이있는 새 디렉토리)에 놓은 다음 또는 ssh를 사용하여 파일을 거기에서 sudo cp
또는 대상으로 이동합니다 sudo mv
.
답변
vimdiff를 사용하여 cssh 및 sudo를 사용하여 대부분 유사한 호스트 그룹에서 구성 파일을 편집하고 싶습니다.
sudoedit (sudo의 일부)를 사용하면 편집기를 일반 사용자로 사용하여 쓰기 권한이없는 파일을 편집 할 수 있으며 환경 변수를 사용하여 편집기를 지정할 수 있습니다. sudoedit는 파일을 복사하고 사본 이름으로 편집기를 호출하고 편집기가 종료 될 때까지 기다린 다음 수정 된 사본을 원래 위치로 다시 복사합니다. 그래서 편집하지 않는 ‘편집기’를 만들었습니다. 나중에 사용하고 대기하기 위해 파일을 메모하고 해당 마커를 사용하는 vimdiff 주위 래퍼를 작성하십시오.
첫 번째 파일은 ~ / .bin / redit입니다.
#!/usr/bin/perl -w
use strict;
use warnings;
use Sys::Hostname;
my $file = $ENV{HOME}.'/.var/redit/'.hostname();
sub cmkdir($){
my $_=shift;
mkdir $_ unless -d $_;
}
cmkdir $ENV{HOME}.'/.var/';
cmkdir $ENV{HOME}.'/.var/redit/';
foreach (@ARGV){
my $fh;
open $fh, '>', $file.'na' or warn;
print {$fh} $_;
close $fh;
symlink $_, $file or die;
print;
<STDIN>;
unlink $file or die;
unlink $file.'na' or die;
}
두 번째는 ~ / .bin / redit1입니다.
#!/usr/bin/perl -w
use strict;
use warnings;
use Sys::Hostname;
my $h=hostname();
@ARGV=qw(host1 host2 host3 host4) unless @ARGV;
print join " ", qw(gvimdiff), $ENV{HOME}.'/.var/redit/'.$h, map {'scp://'.$_.'/.var/redit/'.$_} grep {$_ ne $h} @ARGV;
exec qw(gvimdiff), $ENV{HOME}.'/.var/redit/'.$h, map {'scp://'.$_.'/.var/redit/'.$_} grep {$_ ne $h} @ARGV;
내가 사용하는 방법은 cssh를 사용하여 네 개의 모든 호스트에 대한 연결을 열고 다음과 같은 명령을 사용한 EDITOR=~/.bin/redit sudoedit /etc/conf/file
다음 다른 창에서 실행 ~/.bin/redit1
하고 변경을 저장하고 종료 한 다음 cssh로 다시 전환하고 Enter 키를 눌러 변경 사항을 커밋합니다. sudoedit를 종료하십시오 (두 개 이상의 파일을 편집하는 경우 목록의 다음 파일로 리딧이 진행되고 다음 파일에 대해 redit1을 다시 실행하지 않는 한).
당신이하고있는 일이 덜 복잡하기 때문에 하나의 원격 호스트로 작업하기 때문에 redit1이 필요하지 않으므로 sftp 편집기를 host : .var / redit / host 또는 이와 동등한 것으로 지정할 수 있습니다.
답변
내가하는 일은 (s) ftp 대신 scp를 사용 sudo su -
하고 WinSCP 에서 셸을 Advanced \ SCP \ Shell에 변경하지만 scp 프로토콜 에서만 작동합니다.
답변
sftp의 경우 : ssh shell sudo access가있는 경우, 사용자 이름을 / etc / group의 루트 사용자 그룹에 추가 한 다음 액세스하려는 폴더에 해당 그룹 rx 권한을 부여 할 수 있습니다.