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

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"




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







[최초 등록일: ]
[최종 수정일: 12/2/2023]

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

비밀번호

댓글 작성자
 




... 181  182  183  184  185  186  187  188  189  190  191  [192]  193  194  195  ...
NoWriterDateCnt.TitleFile(s)
175정성태10/31/200518356.NET Framework: 51. MSXML 6.0에서 디지털 서명 기능을 제거!
180정성태11/15/200518661    답변글 VS.NET IDE: 51.1. MSXML 6.0 정식 릴리스
174정성태10/31/200519546.NET Framework: 50. app.config 예시 [1]
173정성태10/30/200518228스크립트: 5. 스크립트 호출 관계
172정성태10/25/200526639.NET Framework: 49. ASP.NET 오류 유형 : 액세스가 거부되었습니다. [2]
171정성태11/14/200528392VC++: 19. 다국어 지원: setlocale( LC_TIME, "" ) 관련 [1]
170정성태11/14/200522978VS.NET IDE: 34. Visual SourceSafe 2005: Remote Internet Access over HTTP : 80 이외의 포트를 지정
206정성태2/1/200619538    답변글 VC++: 34.1. [추가]: Internet Access Plug-in 사용 시 유의 사항
168정성태11/14/200520605VS.NET IDE: 33. IIS 6.0 AppPool 설정 - Enable rapid-fail protection
169정성태10/14/200522313    답변글 VS.NET IDE: 33.1. Enable rapid-fail protection 상황 재현 방법
166정성태11/14/200519501.NET Framework: 48. IE를 죽이는 스크립트 소스
165정성태11/14/200520161.NET Framework: 47. MOM (Microsoft Operations Manager) 2005 서버 설치 가이드
164정성태11/14/200517361.NET Framework: 46. 도메인에 속한 컴퓨터의 Local Computer Policy 변경 방법
162정성태10/3/200519955.NET Framework: 45. VS.NET 2005 IDE에서 Web App를 .NET 2.0 (x64) 머신에 배포
161정성태11/14/200522757.NET Framework: 44. IIS 관리자에서 ASP.NET 탭이 없는 경우.
159정성태9/28/200518768VS.NET IDE: 32. Virtual Server 2005 64bit SP1 Beta 테스트 [2]
163정성태10/3/200516754    답변글 VS.NET IDE: 32.1. 왜...?
158정성태11/14/200519108VS.NET IDE: 31. SQL 2005 - A connection was successfully established with the server
157정성태9/21/200519012기타: 10. SQL2000 설치 시, Invalid Product Key 오류
156정성태9/16/200520987.NET Framework: 43. Wisptis.exe 프로세스
155정성태5/31/200517297.NET Framework: 42. .NET Installer Class에서 Install 메서드 - 설정 사항들 알아내는 코드
154정성태5/13/200516270VS.NET IDE: 30. Windows 2003 for x64에 추가된 레지스트리 Run 노드
152정성태5/5/200519667VC++: 18. VC++ 7.0에서부터 ? : 연산자 처리가 바뀌었습니다.
153정성태5/12/200519921    답변글 VC++: 18.1. VC++ 8.0에서부터 바뀐 CRT 소개
151정성태5/5/200522834VC++: 17. DLL에 export 된 C++ 클래스 멤버 함수 파라미터형 정보 알아내는 방법
150정성태5/5/200523889.NET Framework: 41. 태그 사이의 값을 추출하는 정규식
... 181  182  183  184  185  186  187  188  189  190  191  [192]  193  194  195  ...