[VM] Oracle Cloud 서버 ssh 접속불가 시 – 콘솔에 직접 붙기

(말머리를 뭐로 달아야 하나… 고민했음.)

Oracle Cloud Server 를 무료로 잘 사용중이다.

어느날, 업데이트를 하고 아무생각없이 reboot을 했는데.. ssh 접속이 안된다.. ㅠㅠ

이럴경우 서버에 직접붙어 서버 콘솔화면으로 봐야하는데.. 가상서버이다 보니.. 잘 못찾겠다..

그래도 구글로 찾아보니 방법이 나왔고, 나중을 위해 정리해 놓는다.

우선 Oracle Cloud에 접속한 뒤

Compute > Instances 메뉴에서 해당 서버를 선택한다.

좌측메뉴(안보이면 스크롤을 내린다.)에서 Resources > Console connection을 선택한다.

그리고 오른쪽 본 화면에서 Create local connection 을 선택하여 새로운 연결을 생성한다. (나는 이미 하나 만들어져 있다.)

접속을 위해 key가 필요한데, 새로 생성하거나 기존 키 활용하면 될 듯.(나는 기존에 ssh 접속할때 생성하고 받아놓은게 있어서 그걸 그대로 사용(Paste public key)했다.)

밑에 Create console connection 을 선택하면 연결이 생성된다. (Creating이라 나오다 Active라고 나온다.)

목록 옆에 있는 세로 점3개를 클릭하면 선택메뉴가 뜨는데.. 그중에 Copy serial console connection for Linux/Mac 을 선택한다. (윈도우도 가능한데.. 키를 저장하고 어쩌고.. 좀 복잡하더라 -_-)

맥북이나, linux에서 복사한 명령어를 붙여넣기 하면 접속을 시도한다.

혹시 권한 없다고, Key 확인하라고 그러면.. 접속 key를 해당 위치에 넣어준다.

맥북의 경우 ~/.ssh/id_rsa 라는 파일로 저장해놓으면 된다.

여튼 나는 이렇게 해서 서버 콘솔로 접속했다.

(접속해서 찾아보니.. 원인은 firewalld 가 안올라 와서리.. 모든 포트가 막혀버린 상황이었음. systemctl start firewalld 해서 해결됐음.)

Loading

[Android, Mac] Flutter로 https SSL 접속시 인증 오류 뜰 때(proxy 등)

사무실에서 Android Studio 설치해서 Flutter를 실행해보는데.. 교재보고 통신을 하려고 하니, SSL접속이 안된다.
아마 업무망→인터넷망 나가면서 SSL쪽에 뭔가 제한이 있는 것 같은데.. 결국 검색해서 조치했다.

참고한 원글은 아래 링크이며, 내가 나중에 참고하려고 이쪽에도 적어놓는다.

https://sw-architect.tistory.com/21

Flutter에서 import ‘package:http/http.dart’ as http; 해서 API 정보를 받아오는데.. 사무실 PC에서 하니 다음과 같은 오류가 뜬다. (같은 소스를 노트북에서 하면 정상 작동 되니.. 뭔가 환경적인 문제이다.)
에러 메시지는 다음과 같다.

E/flutter (23242): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: HandshakeException: Handshake error in client (OS Error: 
E/flutter (23242): 	CERTIFICATE_VERIFY_FAILED: self signed certificate in certificate chain(handshake.cc:359))
E/flutter (23242): #0      _SecureFilterImpl._handshake (dart:io-patch/secure_socket_patch.dart:104:46)
E/flutter (23242): #1      _SecureFilterImpl.handshake (dart:io-patch/secure_socket_patch.dart:147:25)
E/flutter (23242): #2      _RawSecureSocket._secureHandshake (dart:io/secure_socket.dart:803:54)
E/flutter (23242): #3      _RawSecureSocket._tryFilter (dart:io/secure_socket.dart:933:19)
E/flutter (23242): <asynchronous suspension>
E/flutter (23242): 

뭐.. 결국 SSL Handshake할 때 인증오류라고 하는데.. 찾아보니 테스트나 내부용으로 사용하는 SSL인증서, 또는 proxy를 통해 연결할때 발생할 수 있단다.
다음과 같이 조치하면 된다고 해서 해봤는데, 일단 나는 해결!!

void main() {
  HttpOverrides.global = NoCheckCertificateHttpOverrides(); // 아래 클래스를 등록
  runApp(const MyApp());
}

// 클래스 추가
class NoCheckCertificateHttpOverrides extends HttpOverrides {
  @override
  HttpClient createHttpClient(SecurityContext? context) {
    // TODO: implement createHttpClient
    return super.createHttpClient(context)
      ..badCertificateCallback =
          (X509Certificate cert, String host, int port) => true;
  }
}

결국 인증을 무시하겠다는얘기니.. 아무상황이나 하면 안되고,
제한된 환경, 특수한 환경에서만 적용하시길.(나는 그냥 공부목적으로 교재에 있는 소스코드 작성할때나 쓸꺼니.. ^^)

Loading

[Mac] 구형 맥북(Catalina)에서 Flutter 세팅정보(각 설치버전)

구형 맥북에 Flutter 개발환경을 꾸리는데.. 그전에 해놨는데, 초기화할일이 있어서.. 급하게 다시 세팅중이다.
그전에 간단히 포스팅 해놓은게 있으니 그걸 참고하여 하는데..(설치 관련 링크는 글 제일 뒷쪽에 모아놨다.)

OS가 최신 OS가 아니다 보니 각종 설치되는 개발관련 프로그램들을 무작정 최신으로 설치할 수만은 없다.
그냥 지금 내 환경에 맞게 세팅가능한 버전들이랑, 몇가지 삽질 사항을 남겨 놓는다.

  • OS : 10.15.7 MacOS Catalina
  • Xcode : 12.4
  • Android Studio : 4.2.2 또는 Arctic Fox (Giraffe같은 최신판은 Java가 포함안됐는지 못찾겠다고 뜸) ==> Giraffe 써도 됨. 마지막에 설명
  • Flutter : 2.5.3 또는 2.2.3
  • Ruby 2.7.8
  • Java : JDK17 (이건 안할 수도.. 전에는 안했던것 같은데.. 이번엔 조금 삽질을해서 밑에 다시 정리하려 한다.) ==> 설치 안해도 됨. 마지막에 설명

Java SDK 버전에 대해 좀 설명하려고 한다.
JDK관련해서 오류가 뜰만한 곳은 2군데이다.

  • Android Studio ( Unable to find bundled Java version. )
  • Android Toolchain ( Cannot execute java to determine the version 또는 flutter doctor –android-licenses 실행시 오류 )

우선 처음에 Android Studio Giraffe 을 깔고 flutter doctor -v를 했더니.. java 8 을 못찾겠다고 뜬다. 그래서 Java8을 설치했지만 여전히 Android Studio에서 못찾고, flutter doctor –android-licenses에서 오류

그래서 Android Studio를 구버전(4.2.2 또는 Artic Fox)으로 돌렸더니 java는 인식 했다(jdk11)
flutter doctor –android-licenses 할때 뜨는 오류는 버전이 안맞아서 그런거란다. 오류메시지에 뜨는 61은 jdk17 이란다. (jdk8->52, jdk11->55 …) 여튼.. jdk17 설치하고, $JAVA_HOME 잡고, PATH추가 한 뒤에 flutter doctor –android-licenses 실행하니 성공했다.


(내용 추가)
다 세팅 끝내놨는데… 구글링 하다가 java 관련 좀 더 쉽게 해결한 내용을 찾아서 남겨놓는다.

Android Studio 최신버전(Giraffe) 사용해도 된다. 어떤이유에선지 jre 디렉토리 명칭을 jbr 로 해놓은 듯 하다.
아래와 같이 해서 jre로 링크 생성해주면 java 잘 찾고 마침 버전도 17이라, flutter doctor –android-licenses 을 위해서 jdk 따로 설치 안해도 된다. 난 뭘한거지 ㅠㅠ

cd /Applications/Android\ Studio.app/Contents
ln -s jbr jre 

(내용 또 추가)
그런데.. 이렇게 했더니… 새 flutter project를 선택해도.. 책에 나와있던대로 샘플코드가 나오질 않는데.. (뭔가 최신버전에 맞게 설정하는게 있는것 같은데.. 지금 새 책을 살 순 없으니 그냥 예전버전으로 세팅해서 사용하는걸로..)


Mac에서 Flutter 설치 관련 글 링크 목록

Loading

[android] Android Studio에서 commons-io-2.6.jar 못 찾는다고 뜰 때 확인해볼 것(좀 당황스런 이유)

사무실 PC에 Android Studio 설치해서 flutter개발을 해보고 있다. (사실 설치만 해놓고 손놓고 있다.)
한동안 안쓰다가 들어가서 실행해 봤더니.. 다음과 같은 에러가 뜬다.

java.lang.IllegalArgumentException: Cannot find JAR 'commons-io-2.6.jar' required by module 'gradle-launcher' using classpath or distribution directory 'C:\Users\user\.gradle\wrapper\dists\gradle-6.7-all\cuy9mc7upwgwgeb72wkcrupxe\gradle-6.7' <18 internal calls>
Exception: Gradle task assembleDebug failed with exit code 1

뭐.. 일반적인 해결방법은 구글링 해서 조치 하시면 될 것 같고.. (gradle 버전이라던가.. 동기화.. 등등..)

나같은 경우에는 좀 황당한 경우라.. 이런경우도 있다고 남겨 놓는다.. (사실 내가 또 나중에 이런 상황을 겪고, 그때 기억못하고 또 삽질 할까봐..)

일단.. 이것저것 해보고 안되서.. commons-io-2.6.jar 을 파일명으로 찾아봤다..
그랬더니 아래의 위치에 있다고 하는데.. 조금 이상하다..

C:\Users\user\.gradle\wrapper\dists\gradle-6.7-all\cuy9mc7upwgwgeb72wkcrupxe\gradle-6.7\lib

보이시는가..? 파일 확장명 뒤로 뭔가가 들러붙은게..

이게.. 사무실 PC다 보니.. 개인정보 보호를 위해서 개인정보 포함 파일은 암호화를 하는데..
이 commons-io-2.6.jar 파일도.. 뭔가 개인정보로 판단할만한 무언가가 있어서(오탐).. 암호화를 해버린 경우..
물론 복호화 기능이 있어서 복호화 했더니.. Android Studio 에서 파일인식 잘되고, 실행도 잘 된다.. 하지만 얼마 안있어서 다시 암호화 해버린다는.. -_-;;

개인정보 필터링시스템 담당자에게 연락해서 예외처리를 해야할 듯 한데.. (귀찮은데..)

여튼.. 이러한 경우도 있다고 알려드리니, 파일이 없다는 에러가 뜨면, 실제 경로명에 해당 파일이 원본 그대로 존재하는지 확인 해보세요 ㅠㅠ

Loading

[Win] 크롬 사용시 잠간씩 멈춤(프리징) 해결법

얼마전부터 PC가 잠간씩.. 마우스가 포인터는 움직이는데 클릭은 안되고.. 그러다 좀 있으면 클릭되고 하는 증상이 발생한다.

혹시나 하고.. 최근 설치된 프로그램들을 봐보는데.. 크롬도 있네..?? (최근 업데이트 설치했나봄..)
또 혹시나 하고 크롬을 삭제해봤는데.. 그런 증상이 없어진것 같다..
또 혹시나 하고 크롬 최신 버전으로 설치했더니. 또 그런 증상이 나오네.. 아마 크롬때문인것 같아 잠간 구글링.

일단 난 아래와 같이 했더니 증상 사라졌다.

조치1 : Calculate window occlusion on Windows 기능 끔

주소창에 “chrome://flags” 입력 → 상단 검색창에 입력하여 Calculate window occlusion on Windows 항목 찾음 → “Disabled” 로 바꿈 → 크롬 재시작

윗 항목만 해도 될것 같긴 한데.. 혹시 몰라 아래도 조치했다.

조치2 : Chrome 종류 후에도 백그라운드 앱 계속 실행 “해제”

크롬 오른쪽 상단 점3개 아이콘 클릭 → “설정” → 왼쪽에서 “시스템” 선택 → “Chrome 종류 후에도 백그라운드 앱 계속 실행” 항목 “해제”

여튼.. 이렇게 설정했더니 아직까진 문제없이 사용중이다.

Loading

[linux] ssh 포트 변경하기 (SELinux에서 Bind Permission denied 뜰 때)

급하게 리눅스(CentOS 7)에서 ssh 포트를 변경할일이 있는데..
예전에 올린글이 있어서 그걸 참고해서 하는데 안되는 부분이 있어서 추가한다.

기본적인건 예전에 올린글 대로 하면 된다.

[linux] ssh 포트 변경하기(추가하기)

다만.. 윗글의 3번 sshd를 재시작 할때..

Jul 26 10:01:07 localhost sshd[1590]: error: Bind to port 1922 on 0.0.0.0 failed: Permission denied.
Jul 26 10:01:07 localhost sshd[1590]: error: Bind to port 1922 on :: failed: Permission denied.
Jul 26 10:01:07 localhost sshd[1590]: fatal: Cannot bind any address.

라면서 안되는 경우가 있는데.. 이 경우 해결책이다.

방법1.

간단한 방법은 보안을 잠간 내린다음 ssh를 실행하고, 다시 보안을 올리는 경우다.
다만 이럴 경우 다음번에 sshd를 restart하면 또 에러난다. (비추. 급할때 써볼 정도)

[root@localhost ~]# setenforece 0         # 보안 내림
[root@localhost ~]# getenforece           #지금 상태 확인
[root@localhost ~]# systemctl restart sshd.service
[root@localhost ~]# systemctl status sshd.service   # 오류가 없는지 확인
[root@localhost ~]# setenforece 1                   # 다시 보안 올림

방법 2.

semanage 명령을 통해 새로운 포트를 등록한다.

[root@localhost ~]# yum install policycoreutils-python       # semanage가 없을 경우 설치
[root@localhost ~]# semanage port -l | grep ssh          # 현재 상태 확인
ssh_port_t                     tcp      22               # ssh 22번 포트 확인
[root@localhost ~]# semanage port -a -t  ssh_port_t -p tcp 1922       # tcp 1922 포트를 ssh_port_t 에 추가
[root@localhost ~]# semanage port -l | grep ssh
ssh_port_t                     tcp      1922, 22         # 1922 추가 확인

추가로..

방화벽에 정책에 추가해줘야할 수도 있다.

[root@localhost ~]# firewall-cmd --zone=public --add-port=1922/tcp --permanent
[root@localhost ~]# firewall-cmd --reload
[root@localhost ~]# firewall-cmd --info-zone=public   # 추가됐는지 확인

Loading

[linux] lynx 파일 다운로드 위치(/tmp) 바꾸기

역시나 내가 나중에 찾아보려고 적어놓는다.

사무실 PC에서 다운받을 때 속도가 느릴경우가 있는데.. 이럴때 리눅스 설치해놓은 작업서버에서 받으면 빠를 때가 있다.

보통은 wget 을 사용하는데.. 이게 뭔가 잘 안됨(https:// 로 연결되는데, 인증서나 뭐 그런게 잘 안맞는 듯)

그래서 간단한 text browser인 lynx 로 download페이지에 접속해보니 페이지는 열린다. 그런데 정작 내가 다운받으려고 하는 파일 링크 클릭이 안된다.

그래서 파일 직링크를 lynx에 바로 쳐 넣으니.. 뭔가.. 메시지가 뜨고.. 계속 continue 하냐고 물어보고 어쩌고 하니.. 드디어 D)ownload, or C)ancel 이 뜬다.

“D”를 누르고 한참 기다리니.. 파일을 잘 받는 듯 하더니..

갑자기 용량이 없다고 멈춰버린다.

“헉” 하면서 확인해보니.. 하드 용량은 많은데… ‘혹시나..’ 하면서 다시 다운로드 하면서 df -m 으로 확인을 해보니.. /tmp 에 다운을 받고 있다.. (/tmp 는 용량을 거의 안잡았다. ㅠㅠ)

그래서.. 급하게.. 용량 넉넉한.. /home/tmp2 를 하나 만들고.. 그곳을 다운받을 디렉토리로 지정했다. (물론 구글링 잠간 해본 결과다.)

다음과 같이 세팅하면 된다.

# export LYNX_TEMP_SPACE=/home/tmp2

그런 다음.. 다시 lynx 실행하고, 다운을 받으면 성공~

Loading

[linux] CentOS 7 root 패스워드 분실 시

root 패스워드 잊어버렸을때.. 혹은 어떠한 이유로, 알고있는 비밀번호가 맞지 않을때..
오래된 기억으로 콘솔에서 single 모드로 들어가면 된다고 알고있었는데..
이게 CentOS 6까진 먹는데.. 7에는 싱글모드가 없단다.

그래서 알아보니.. 다음과 같이 하면 된다고 하더라..(나도 이렇게 해서 해결했다.)

콘솔 부팅시 위 화면에서 ‘e’를 누른다.

부팅 파라메터가 쭉~ 나오는데.. 그중에 ro 와 rhgb quit 부분을 찾는다.
(한 화면에 안나와서.. 화살표를 눌러 아래로 내려야 할 수도 있다.)

아까 찾았던 부분은 수정한다.
ro => rw , rhgb quit => init=/bin/bash

그러고 나서 Ctrl-X 를 누르면 수정된 파라매터로 부팅된다.

부팅하고 나면, 로그인 창 프롬프트 없이 바로 쉘화면으로 떨어진다.

부팅되면 passwd 명령어로 비밀번호 변경

비밀번호 변경후에

# touch /.autorelabel
# exec /sbin/init

라고 치면.. 리부팅 된다. 리부팅 후 변경한 비밀번호가 먹으면 성공.

Loading

[Mac] 맥북 Shift-Space 키로 한/영 전환하기

맥북을 가끔 쓰다 보니.. 또 가끔 OS를 업데이트 하고나, 초기화도 하다 보니, 설정이 변경될 때가 있다.

그중에 하나가 한/영 변환인데.. 역시 제일 편한건 Shift-Space. (이건 아래아 한글때부터 써오던 방법이라..)

요즘엔 맥OS에서 기본으로 제공 되는 듯. 또 찾아볼까봐 여기에 남겨놓는다.

맥OS [설정] – [키보드] 에 들어가서 상단에 [단축키] 좌측에 [입력 소스] 를 선택하면 아래와 같은 화면이 나온다.

여기서 [이전 입력 소스 선택] 항목이 한/영 전환하는 항목이다.
지금은 보다시피 Ctrl-Space 로 되어있다.

이부분을 더블클릭 하면 수정할 수 있는데.. Shift-Space 는 입력이 안된다.

이럴땐..

Fn + Shift + Space 를 누르면

Shift-Space로 입력 된다.

그외 CapsLock 으로 한영 변환하기는 아래 글을 참고하시길

[Mac] 맥북에서 Caps Lock 으로 한/영 전환 설정/해제

Loading

[GIS] ArcGIS, QGIS에서 레이어(shape) 좌표계 지정하기

GIS프로그램으로 많이들 쓰는게 유료프로그램인 ArcGIS 와 무료인 QGIS가 아닐까 싶다.

어떤 shape파일을 불러왔을때, 좌표계가 안 맞으면 엉뚱한곳에 가있거나 바다위에 떠있기도 하는데…

이럴경우 불러온 shape파일의 레이어를 맞게 지정해 주면 된다.

QGIS에서 좌표계 설정

1. 레이어 우클릭 [속성] 클릭

2. ①왼쪽 [소스] → ②[소스 좌표계 설정] 항목에서 지구본 클릭 → ③필터에서 좌표계 검색 → ④검색된 좌표계 선택 → ⑤[확인] → ⑥[확인]

3. 확인을 위해 레이어 우클릭 → [레이어로 확대/축소] 선택

4. 정상적으로 위치한 레이어 확인

ArcGIS에서 좌표계 설정

1. 레이어 우클릭 → [등록정보] → 왼쪽 [원본] → [공간 기준체계] 확인 (“알 수 없는 좌표계” 확인)

2. 상단 [분석] → [도구] → 오른쪽 패널의 [지오프로세싱] → 검색창에 “투영 정의” 혹은 “Define Projection” 검색

3. ① [입력 데이터 셋 또는 피처 클래스]에 변경하고자 하는 레이어 선택 → ②[좌표계]옆에 지구본 클릭 → ③[사용 가능한 XY 좌표계] 옆 필터에 원하는 검색어 입력 → ④검색된 좌표계 선택 → ⑤[확인] → ⑥[실행]

4. 확인을 위해 레이어 우클릭 → [레이어로 확대/축소] 선택

5. 제대로 올라온 것 확인

Loading