ssh 명령을 통해 터치를 실행할 때 권한 문제가 발생합니다(단, ssh 액세스는 사용하지 않음).

ssh 명령을 통해 터치를 실행할 때 권한 문제가 발생합니다(단, ssh 액세스는 사용하지 않음).

SSH를 통해 원격 스크립트를 실행하고 터치 시 권한 오류가 발생하는 반면, 동일한 키를 사용하여 SSH를 통해 연결하면 모든 것이 잘 작동합니다. 예를 들어 스크립트를 실행하고 echo를 실행합니다.

이것이 내가 실행하는 코드입니다:

ssh -Tv [email protected] 'bash var/deploy.sh'

스크립트의 내용은 다음과 같습니다.

#!/bin/bash
echo "blabla"
touch bidule
ln -sfn www-26 www

다음은 명령의 결과입니다.

debug1: Reading configuration data /Users/local_user/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 149.202.xxx.xxx [149.202.xxx.xxx] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /Users/local_user/.ssh/id_rsa type -1
...
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.9
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.5p1 Ubuntu-10ubuntu0.1
debug1: match: OpenSSH_7.5p1 Ubuntu-10ubuntu0.1 pat OpenSSH* compat 0x04000000
debug1: Authenticating to 149.202.xxx.xxx:22 as 'user'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client [email protected] <implicit> none
debug1: kex: client->server [email protected] <implicit> none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256     SHA256:sSTBN/oPCEhmpaK2UKIU1DC1uhlGB3F0II2TDfHi5eA
debug1: Host '149.202.xxx.xxx' is known and matches the ECDSA host key.
debug1: Found key in /Users/local_user/.ssh/known_hosts:1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/local_user/.ssh/local_user_mac
debug1: Server accepts key: pkalg ssh-rsa blen 535
debug1: Authentication succeeded (publickey).
Authenticated to 149.202.xxx.xxx ([149.202.xxx.xxx]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug1: Sending environment.
debug1: Sending env LC_CTYPE = UTF-8
debug1: Sending command: bash var/deploy.sh
blabla
touch: cannot touch 'bidule': Permission denied
ln: failed to create symbolic link 'www': Permission denied
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 4144, received 2844 bytes, in 0.4 seconds
Bytes per second: sent 10803.0, received 7414.0
debug1: Exit status 1

또한 ssh에 대한 다양한 옵션(-ttv, -Tv, -v)을 시도했지만 항상 동일한 대답을 얻었습니다.

동일한 키를 사용하고 간단히 ssh를 사용하면[이메일 보호됨] 그런 다음 명령줄에서 bash var/deploy.sh를 실행하면 제대로 작동했습니다.

또한 이 디렉토리의 모든 내용은 동일한 키를 사용하여 SFTP를 통해 업로드됩니다.

문맥:

서버 운영 체제:

Distributor ID: Ubuntu
Description:    Ubuntu 17.10
Release:    17.10
Codename:   artful

클라이언트(ssh 명령이 사용되는 곳): 로컬 테스트를 위한 bitbucket 파이프라인 인스턴스 또는 mac OSX.

자세한 내용은 var 디렉터리에 대한 권한을 참조하세요.

[10:39:32] iam.test.edu-sante.com@Dagobert:~/var$ ls -rtla
total 48
drwxr-xr-x  4 root                   root           4096 Mar 26 14:37 ..
-rw-r--r--  1 user                   group            58 Mar 26 17:46 deploy.sh
drwxr-xr-x  3 user                   group          4096 Mar 26 17:46 www-26
...
lrwxrwxrwx  1 user                   group             6 Mar 27 10:13 www -> www-24
drwxr-xr-x 11 user                   group          4096 Mar 27 10:13 .

여기서 var 디렉터리는 /var 디렉터리가 아니라 사용자별 $HOME/var 디렉터리입니다.

혹시라도 내 sshd 구성 파일은 다음과 같습니다.

#   $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
MaxAuthTries 6
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem   sftp    /usr/lib/openssh/sftp-server
Match group sftp
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no

사용자는 sftp 그룹에 속하지 않습니다.

답변1

~/var디렉토리에서 스크립트를 실행 하려는 것 같지만 현재는 홈 디렉토리에서 실행되고 있습니다.

이 명령은 디렉토리 bash var/deploy.sh로 전환하지 않고 대신 현재 디렉토리(사용자의 홈 디렉토리일 수 있음)에 파일을 생성하려고 시도합니다.vartouch bidule

관련 정보