Microsoft MVP성태의 닷넷 이야기
오류 유형: 550. scp - sudo: no tty present and no askpass program specified [링크 복사], [링크+제목 복사]
조회: 1525
글쓴 사람
홈페이지
첨부 파일
 

scp - sudo: no tty present and no askpass program specified

예전에 만들어 둔 scp 제어 프로그램을 보면,

pscp.exe 기능을 C#으로 제어하는 방법
; https://www.sysnet.pe.kr/2/0/11849

session.ExecuteCommand라는 기능을 통해 원격지 리눅스 머신에 명령어를 수행하는 것이 가능합니다. 그런데 간혹 sudo 권한으로 명령을 실행하고 싶을 수가 있는데, 그럴 때 해당 프로그램을 다음과 같은 식으로 실행하면,

string cmd = "sudo /usr/bin/dotnet";

session.ExecuteCommand(cmd);

원격지에서는 암호를 다시 입력받는 과정을 거치느라 잠시 후 오류가 발생합니다.

sudo: no tty present and no askpass program specified
Error: WinSCP.SessionRemoteException: Command 'sudo /usr/bin/dotnet'
failed with return code 1 and error message
sudo: no tty present and no askpass program specified.
   at WinSCP.OperationResultBase.Check()
   at Example.DoRunCommand(Session session, CommandArg arg, String password) in D:\dpapiscp\Program.cs:line 96
   at Example.Main(String[] args) in D:\dpapiscp\Program.cs:line 64

따라서 이 암호를 입력받는 것을 자동화해야 하는데요. 이를 위해 sudo 명령의 -S 옵션을 이용하면 됩니다. 그래서 다음과 같이 입력을 redirection 받을 수 있습니다.

string cmd = "echo pwct | sudo -S /usr/bin/dotnet"; // 암호가 pwct라고 가정

session.ExecuteCommand(cmd);




참고로, 원격에서 수행할 명령을 cmd.exe 창의 명령행을 통해 다음과 같이 전달하고 싶을 수 있습니다.

C:\temp> dpapiscp.exe echo pwct | sudo -S /usr/bin/dotnet

그런데, 위와 같이 입력하면 "|" 기호도 윈도우 shell은 파이프라인 기호로 인식하기 때문에 sudo를 명령어로 해석하게 되어 다음과 같은 오류가 발생합니다.

'sudo' is not recognized as an internal or external command, operable program or batch file.

따라서 이런 경우에는 인용 마크를 함께 써서 해결해야 합니다.

C:\temp> dpapiscp.exe "echo pwct | sudo -S /usr/bin/dotnet"




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]





[최초 등록일: ]
[최종 수정일: 6/20/2019 ]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer@outlook.com

비밀번호

댓글 쓴 사람
 




1  2  3  4  5  6  7  8  9  10  [11]  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
11968정성태7/1/20192058오류 유형: 551. Visual Studio Code에서 Remote-SSH 연결 시 "Opening Remote..." 단계에서 진행되지 않는 문제 [1]
11967정성태7/1/2019998개발 환경 구성: 446. Synology NAS를 Windows 10에서 iSCSI로 연결하는 방법
11966정성태6/30/2019982Math: 62. 활성화 함수에 따른 뉴런의 출력을 그리드 맵으로 시각화파일 다운로드1
11965정성태6/30/20191025.NET Framework: 846. C# - 2차원 배열을 1차원 배열로 나열하는 확장 메서드파일 다운로드1
11964정성태6/30/20191303Linux: 20. C# - Linux에서의 Named Pipe를 이용한 통신
11963정성태6/29/20191205Linux: 19. C# - .NET Core Unix Domain Socket 사용 예제
11962정성태6/27/2019780Math: 61. C# - 로지스틱 회귀를 이용한 선형분리 불가능 문제의 분류파일 다운로드1
11961정성태6/27/2019666Graphics: 37. C# - PLplot - 출력 모음(Family File Output)
11960정성태6/27/2019976Graphics: 36. C# - PLplot의 16색 이상을 표현하는 방법과 subpage를 이용한 그리드 맵 표현
11959정성태6/27/2019753Graphics: 35. matplotlib와 PLplot의 한글 처리
11958정성태6/25/20191912Linux: 18. C# - .NET Core Console로 리눅스 daemon 프로그램 만드는 방법 [1]
11957정성태6/24/20192177Windows: 160. WMI 쿼리를 명령행에서 간단하게 수행하는 wmic.exe [1]
11956정성태6/24/20191519Linux: 17. CentOS 7에서 .NET Core Web App 실행 환경 구성 [1]
11955정성태6/20/20191139Math: 60. C# - 로지스틱 회귀를 이용한 분류파일 다운로드1
11954정성태6/20/20191525오류 유형: 550. scp - sudo: no tty present and no askpass program specified
11953정성태6/20/2019928오류 유형: 549. The library 'libhostpolicy.so' required to execute the application was not found in '...'
11952정성태6/20/20191171Linux: 16. 우분투, Centos의 Netbios 호스트 이름 풀이 방법
11951정성태6/20/20191316오류 유형: 548. scp 연결 시 "Permission denied" 오류 및 "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!" 경고
11950정성태6/18/20191531.NET Framework: 845. C# - 윈도우 작업 관리자와 리소스 모니터의 메모리 값을 구하는 방법
11949정성태6/18/2019801오류 유형: 547. CoreCLR Profiler 예제 프로젝트 빌드 시 컴파일 오류 유형
11948정성태6/17/2019937Linux: 15. 리눅스 환경의 Visual Studio Code에서 TFS 서버 연동
11947정성태9/25/20191223Linux: 14. 리눅스 환경에서 TFS 서버 연동
11946정성태6/17/20191534개발 환경 구성: 445. C# - MathNet으로 정규 분포를 따르는 데이터를 생성, PLplot으로 Histogram 표현파일 다운로드1
11945정성태6/25/20191258Linux: 13. node.js에서 syslog로 출력하는 방법
11944정성태6/16/20193833Linux: 12. Ubuntu 16.04/18.04에서 node.js 최신 버전 설치 방법
11943정성태6/15/20191473.NET Framework: 844. C# - 박싱과 언박싱 [1]
1  2  3  4  5  6  7  8  9  10  [11]  12  13  14  15  ...