Skip to content

Commit

Permalink
ssh
Browse files Browse the repository at this point in the history
  • Loading branch information
songdaegeun committed Jun 24, 2024
1 parent 2f3a0d8 commit 9b97ef9
Show file tree
Hide file tree
Showing 7 changed files with 153 additions and 83 deletions.
9 changes: 2 additions & 7 deletions _posts/2024-05-14-개념-pontryagins-maximum-principle.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,8 @@ layout: post
title: 개념-Pontryagins_maximum_principle
date: 2024-05-14 16:48 +0900
author: songdaegeun
categories:
tags:
categories:
tags:
pin: false
math: true
---

#### 참고문서

[Pontryagins_maximum_principle](https://en.wikipedia.org/wiki/Pontryagin%27s_maximum_principle)

63 changes: 55 additions & 8 deletions _posts/2024-06-09-2-ros1-in-m1-mac.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ math: true

이번 포스팅에서는 pre build된 conda-forge를 사용해서 native한 m1 macos 환경에서 다시 noetic설치를 시도해볼 것이다.
[conda-forge추천](https://discourse.ros.org/t/ros-gui-on-macbook-air-m1-chip/27205/6)
[robostack_pkg](https://robostack.github.io/noetic.html)
[gazebo docs](https://gazebosim.org/docs)

rviz, gazebo같은 gpu context가 필요한 visualisation과 simulation도 가능!

Expand Down Expand Up @@ -87,7 +89,7 @@ pip install vcstool
vcs import src < noetic-gazebo.rosinstall
```

4. gazebo11최신화
4. gazebo11 최신버전
```
brew install gazebo11 --HEAD
```
Expand All @@ -98,20 +100,44 @@ brew unlink gazebo11
brew install gazebo11 --HEAD
```

4-1. gazebo 재설치
[gazebo docs](https://gazebosim.org/docs)를 따라 다음과 같이 gazebo를 설치했다.
```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
// brew에 osrf/simulation저장소 추가
brew tap osrf/simulation
// Mac Ventura에 적합한 gz version(ignition-citadel) 설치
brew install ignition-citadel
```
ignition-citadel에 종속된 ogre2.1패키지 설치에서 진행이 안된다.
[관련이슈](https://github.com/osrf/homebrew-simulation/issues/1628)
```
brew install ogre2.1
```


5. mamba install ros-noetic-gazebo-ros
다음의 명령으로 gazebo_ros라는 package를 mamba의 robostack채널에서 찾아보았지만, 없었다.
```
mamba search gazebo_ros -c robostack
mamba search gazebo_ros -c robostack
```
[ex. gazebo-ros 설치(robostack issue)](https://stackoverflow.com/questions/77933813/cannot-find-gazebo-ros-package-in-robostack-how-run-gazebo-with-ros2-humble-in)를 참고하여, 다음의 명령으로 ros-noetic-gazebo-ros를 설치하면 된다는 것을 알았다.
```
mamba install ros-noetic-gazebo-ros
mamba install ros-noetic-gazebo-ros
```

6. ros-noetic-controller-manager
6. mamba install -c robostack-staging
default채널이 robostack-staging이지만, 명시적으로 하려면 다음과 같이 옵션을 준다.
```
mamba install ros-noetic-controller-manager
mamba install ros-$ROS_DISTRO-ros-controllers
mamba install -c robostack-staging {패키지명}
```

6. gazebo.launch 관련 패키지
controller spawner, urdf spawner, robot_state_publisher, xacro 등에 관련된 패키지이다.
```
mamba install ros-noetic-ros-control ros-noetic-ros-controllers ros-noetic-gazebo-ros-pkgs;
mamba install ros-noetic-controller-manager ros-noetic-joint-state-publisher ros-noetic-robot-state-publisher ros-noetic-xacro;
mamba install ros-noetic-joint-state-controller ros-noetic-effort-controllers ros-noetic-position-controllers;
```

7. if < eigen3.4 error
Expand All @@ -128,8 +154,8 @@ pkg-config --modversion eigen3
eigen3.4를 다운받고 eigen3으로 이름바꾸고 /usr/include에 위치시켰다.


8. 무한대기이슈(미해결)
<!-- macos에서 발생 -->
8. model not be loaded on gz(미해결)

```
[INFO] [1718797795.879569, 0.000000]: Waiting for /clock to be available...
[INFO] [1718797795.881280, 0.000000]: Controller Spawner: Waiting for service controller_manager/load_controller
Expand All @@ -152,6 +178,27 @@ node의 실행이 종료되었지만 ROS master를 중심으로 하는 분산형
rosnode cleanup
```

```
mamba install compilers cmake pkg-config make ninja colcon-common-extensions catkin_tools
mamba install ros-noetic-simulators
```

아래의 이슈를 보니 libprotobuf의 버전이 문제라고 한다.
[gz에 model없는 이슈 - libprotobuf 24.4.0설치](https://github.com/RoboStack/ros-noetic/issues/459)

현재 libprotobuf version은 4.25.3인 것을 확인할 수 있다.
```
mamba list | grep libprotobuf
```
수동으로 4.24.4로 맞춰준다.
```
mamba install libprotobuf==4.24.4
```

9. 실행하자마자 Controller Spawner 종료문제
[WARN] [1719161164.840953, 27.615000]: Controller Spawner couldn't find the expected controller_manager ROS interface.


9. test

```
Expand Down
4 changes: 3 additions & 1 deletion _posts/2024-06-21-gazebo-urdf-xacro.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ $(env ENVIRONMENT_VARIABLE)
- include
현재 launch파일에 다른 .launch 파일을 포함시킨다.
include되는 file은 master 태그(deprecated)를 제외한 모든 내용이 포함된다.
이름이 사용자 파일과 충돌하지 않도록 네임스페이스를 할당할 수 있다.
이름이 사용자 파일과 충돌하지 않도록 네임스페이스를 할당할 수 있다.

- env
machine이나 node를 위해 set되어야하는 environment variables를 정의한다.
Expand All @@ -151,3 +151,5 @@ Launch a test node (see rostest).
#### .world
모델을 추가하고, 센서, 조명, 지형 등의 환경을 정의하는데 사용된다.
XML 기반의 파일형식이다.

#### .gazebo
57 changes: 0 additions & 57 deletions _posts/2024-06-21-launch파일구조분석.md

This file was deleted.

10 changes: 0 additions & 10 deletions _posts/2024-06-21-urdf파일구조분석.md

This file was deleted.

93 changes: 93 additions & 0 deletions _posts/2024-06-24-개념-ssh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
---
layout: post
title: 개념-ssh
date: 2024-06-24 16:06 +0900
author: songdaegeun
categories:
tags: ["ssh"]
pin: false
math: true
---

#### public key(대칭키) and private key(공개키, 비대칭키)
- 대칭키
암호화와 복호화에 사용하는 키가 동일한 방식
- 비대칭키
암호화에 사용하는 키(public key)와 복호화에 사용하는 키(private key)가 다른 방식
public key는 공개적으로 배포가 가능.

#### ssh?
![ssh_scheme.png](/assets/img/개념/2024-06-24-개념-ssh/ssh_scheme.png){: width="200"}
원격지의 셸에 접속하기 위해 사용되는 네트워크 프로토콜이다.
암호화가 이루어지지 않는 텍스트 기반 통신인 telnet에 비교하여 보안성이 높은 프로토콜이며,
키 교환 알고리즘 기반의 암호화 기능을 추가하여 1995년에 공개된 프로토콜이다.

server의 공개키는 client가 처음으로 접속을 시작할 때 취득한다.
client의 공개키는 프로토콜 이외의 방식으로 server의 ~/.ssh/authorized_keys 파일에 입력한다.

#### 사용환경
서버: Ubuntu 18.04
클라이언트: macos 14.5

#### server setting

```
# ssh server 설치 확인
apt list openssh*
# 설치안된경우 설치
apt install openssh-server
# sshd status확인
systemctl status sshd
# sshd status가 active가 아닌 경우 restart
systemctl restart sshd
###### 필요하면 수행 #####
# sshd port(22)가 LISTEN state인지 확인
# ss -nlt (in ubuntu)
# netstat -an | grep LISTEN (in macos m1)
# 방화벽 활성화여부 확인
# ufw staus
# 방화벽 rule확인
# iptables -nL (in macos m1)
# 필요하면 방화벽 활성화
# ufw enable
# 방화벽에 22/tcp 허용
# ufw allow 22/tcp
###### 필요하면 수행 #####
```

sshd_config파일설정
```
Port 22
PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
```
PermitRootLogin는 보안상 no를 하는 것이 좋지만, 연구실에서는 yes로 한다.
ssh설정 중에 client에서 server로 ssh-copy-id를 통해 publickey를 복사해야하므로,
PasswordAuthentication는 yes로 해두고, publickey를 통한 ssh연결 setting이 끝나면 no로 한다.

설정이 끝나면, sshd를 restart해야 적용된다.

server가 client의 공개키를 가졌는지 확인
```
vi ~/.ssh/authorized_keys
```
client에서 동일한 key로 다른 machine에 ssh연결을 원하는 경우, ~/.ssh파일을 원하는 machine에 복사하면 된다.

#### client setting

```
# ssh key 생성
# ssh-keygen -t rsa -b 4096 -f {keyfile이름}
ssh-keygen -t rsa -b 4096
# public key를 server에 복사
# server에서 vi ~/.ssh/authorized_keys로 확인가능
ssh-copy-id -i mykey.pub {user}@{ip}
```


#### 참고문서
[공개키암호화,ssh](https://velog.io/@lehdqlsl/SSH-%EA%B3%B5%EA%B0%9C%ED%82%A4-%EC%95%94%ED%98%B8%ED%99%94-%EB%B0%A9%EC%8B%9D-%EC%A0%91%EC%86%8D-%EC%9B%90%EB%A6%AC-i7rrv4de)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 9b97ef9

Please sign in to comment.